我有一个带有大型NSTextFeildCell的窗口,可以在其中修改文本。单击按钮后,会出现另一个窗口,其中可以以某种方式使用原始窗口中的文本。我遇到的问题是,当我试图检索日志吐出的文本时。。。
"-[NSTextView字符串值]:无法识别的选择器发送到实例0x100151860"被长长的痕迹落下。。。
我试过几种不同的方法来解决这个问题,但没有成功。
目前,
第一个窗口控制器
.h
#import <Cocoa/Cocoa.h>
@class NextWindowController;
@interface TextViewWindowController : NSWindowController
@property (nonatomic, weak) NextWindowController *NextWindow;
@property (nonatomic, weak) IBOutlet NSTextFieldCell *txtTextView;
- (IBAction)btnClicked:(id)sender;
- (NSString*)getText;
@end
.m
#import "TextViewWindowController.h"
#import "NextWindowController.h"
@implementation TextViewWindowController
@synthesize NextWindow;
- (IBAction)btnClicked:(id)sender{
[NextWindow setCallingWindow:self];
[NextWindow showWindow:self];
}
- (NSString*)getText{
return [_txtTextView stringValue];// there is a problem with the view...
}
@end
下一个窗口控制器
.h
#import <Cocoa/Cocoa.h>
@class TextViewWindowController;
@interface NextWindowController : NSWindowController{
NSMutableString* str;
}
@property (nonatomic, weak) TextViewWindowController *callingWindow;
@end
.m
#import "NextWindowController.h"
#import "TextViewWindowController.h"
@implementation NextWindowController
@synthesize callingWindow;
- (IBAction)btnEnterClicked:(id)sender{
[str setString:callingWindow.txtTextView.stringValue];
}
- (id)initWithWindow:(NSWindow *)window{
self = [super initWithWindow:window];
if (self) {
str = [[NSMutableString alloc] init];
}
return self;
}
@end
我也尝试过str=[callingWindow getText],得到了相同的结果。
如有任何帮助,我们将不胜感激!
从苹果的文档中了解并不是非常直观,但要获得NSTextView(继承自NSText)的原始字符串值,只需使用:
[_txtTextView string];
由于您使用的是属性,因此在函数中使用访问器可能更明智,如下所示:
- (NSString*)getText{
return [self.txtTextView string];
}