NSTextField不会setStringValue

时间:2011-07-12 18:22:03

标签: objective-c xcode cocoa interface-builder nstextfield

我刚刚开始使用包含NSTextField的NSWindow,这是一个非常简单的应用程序的开头(实际上还不是目标C)。 appdelegate.h有这个:

NSWindow *window;
NSTextField *userIDText;

@property (nonatomic, retain) IBOutlet NSWindow *window;
@property (nonatomic, retain) IBOutlet NSButton *nextButton;
@property (nonatomic, retain) IBOutlet NSTextField *userIDText;

appdelegate在Interface Builder中连接到窗口和文本字段,然后在.m文件中:

@synthesize userIDText;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [userIDText setStringValue:@"user"];
    NSLog(@"UserIDTextString: %@", [userIDText stringValue]);

(我还尝试了除@“user”以外的其他东西作为字符串) 日志仅显示(null),文本字段不会更改。我究竟做错了什么?我现在在互联网上搜索大约5小时,显然我真的很简单。

2 个答案:

答案 0 :(得分:2)

在加载窗口之前调用applicationDidFinishLaunching方法。这就是为什么NSLog(@"UserIDTextString: %@", [userIDText stringValue]);打印null并且你无法设置文本字段的值。尝试使用awakeFromNib方法。

答案 1 :(得分:1)

刚发现你的问题,因为我有同样的问题。 问题是,如果在预先创建的“MainMenu.xib”中创建一个带有按钮和内容的窗口,则不会将所有内容连接到“文件所有者”,而是连接到左侧单独生成的“App Delegate”对象。 / p>

我很确定你已经解决了这个问题。 认为对于遇到同样问题的其他人可能会有帮助。

祝你好运!