窗口出现时标签上的文字未设置

时间:2013-10-29 20:14:10

标签: objective-c cocoa nsview nswindow nswindowcontroller

我使用自定义 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

3 个答案:

答案 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文件中的标签文本。

相关问题