0

我制作了一个带有自定义MyWindow.xibMyWindowController的小型 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 。

4

3 回答 3

2

这里的问题是您的标签实际上还不是可视的,因此更改文本没有任何作用。解决此问题的一种方法是在控制器中有一个字符串属性并设置它:

self.controller.textForLabel = @"My text";

然后在你viewWillAppear:的控制器的 .m 中你可以设置文本:

[self setText:self.textForLabel];
于 2013-10-29T20:27:33.187 回答
0

在您的项目中,您在显示窗口之前更改文本,这是在初始化之前完成的。只需切换这个:

[self.controller setText:@"My text"];
[self.controller showWindow:self];

[self.controller showWindow:self];
[self.controller setText:@"My text"];
于 2013-10-29T20:29:45.147 回答
0

两种解决方法:替换两行代码,显示窗口后设置文本,应该如下所示:

[self.controller showWindow:self];
[self.controller setText:@"My text"];

另一种方法是在“-(void)windowDidLoad”函数内更改 MyWindowController.m 文件中的标签文本。

于 2013-10-29T20:35:30.387 回答