我使用自定义 MyWindow.xib 和 MyWindowController 制作了一个小型Cocoa应用程序。该窗口包含一个NSTextField(标签),从我的 AppDelegate 我正在初始化该控制器及其视图,在标签上设置文本并显示窗口:
self.controller =[[MyWindowController alloc] initWithWindowNibName:@"MyWindow"];
[self.controller setText:@"My text"];
[self.controller showWindow:self];
但是当窗口出现时,仍会显示默认的“标签”文本。为什么呢?
我的示例项目可以在这里下载:http://s000.tinyupload.com/?file_id=00611347759347594342。
答案 0 :(得分:2)
这里的问题是你的标签实际上还不是可视的,所以改变文字什么都不做。解决此问题的一种方法是在控制器中设置字符串属性并设置:
self.controller.textForLabel = @"My text";
然后在控制器.m的viewWillAppear:
中,您可以设置文字:
[self setText:self.textForLabel];
答案 1 :(得分:0)
在项目中,您在显示窗口之前更改文本,这在初始化之前完成。只需切换它:
[self.controller setText:@"My text"];
[self.controller showWindow:self];
到
[self.controller showWindow:self];
[self.controller setText:@"My text"];
答案 2 :(得分:0)
解决问题的两种方法: 替换两行代码,在显示窗口后设置文本,所以它应该如下所示:
[self.controller showWindow:self];
[self.controller setText:@"My text"];
其他方法是在“ - (void)windowDidLoad”函数中更改MyWindowController.m文件中的标签文本。