Текст на этикетке не установлен, когда появляется окно

Я сделал небольшое приложение какао с пользовательским MyWindow.xib и MyWindowController. Окно содержит 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 ответа

Решение

Проблема здесь в том, что ваш ярлык на самом деле еще не визуален, поэтому изменение текста ничего не дает. Один из способов обойти это - иметь свойство string в вашем контроллере и установить следующее:

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

Тогда в вашем viewWillAppear:в.m вашего контроллера вы можете установить текст:

[self setText:self.textForLabel];

В вашем проекте вы изменяете текст перед отображением окна, что делается до инициализации. Просто включите это:

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

в

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

Есть два способа решить эту проблему: заменить две строки кода, установить текст после отображения окна, чтобы оно выглядело следующим образом:

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

Другой способ - изменить текст метки в файле MyWindowController.m внутри функции "-(void)windowDidLoad".

Другие вопросы по тегам