Текст на этикетке не установлен, когда появляется окно
Я сделал небольшое приложение какао с пользовательским 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".