我刚刚开始使用包含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小时,显然我真的很简单。
答案 0 :(得分:2)
在加载窗口之前调用applicationDidFinishLaunching
方法。这就是为什么NSLog(@"UserIDTextString: %@", [userIDText stringValue]);
打印null并且你无法设置文本字段的值。尝试使用awakeFromNib
方法。
答案 1 :(得分:1)
刚发现你的问题,因为我有同样的问题。 问题是,如果在预先创建的“MainMenu.xib”中创建一个带有按钮和内容的窗口,则不会将所有内容连接到“文件所有者”,而是连接到左侧单独生成的“App Delegate”对象。 / p>
我很确定你已经解决了这个问题。 认为对于遇到同样问题的其他人可能会有帮助。
祝你好运!