Не удается изменить текстовую метку на листе
Я создал лист, на котором я хотел бы отображать различные сообщения, пока программа выполняет анализ данных. Лист открывается и закрывается правильно, и у меня есть текстовая метка на листе, которая подключена к моему главному контроллеру (владельцу листа) с выходом IB.
Nib загружается правильно, открывается и закрывается правильно, но статическая текстовая метка никогда не обновляется. Подключенный IB Outlet был определен следующим образом:
IBOutlet id mySheetText;
Я пытаюсь изменить текст на листе так:
[mySheetText setStringValue:@"Some text message..."];
Этот формат отлично работает, если метка находится в главном окне, но ничего не делает, если метка находится на листе.
Все соединения в IB кажутся правильными. Я уверен, что мне не хватает чего-то очень простого, и я предполагаю, что это как-то связано с тем фактом, что лист - это другое "окно", чем главное окно, но я не могу ничего найти в документах, чтобы указать мне в правильном направлении.
Кстати, вот как я соединил лист...
NSWindow *mySheet;
@property (assign) IBOutlet NSWindow *mySheet;
@synthesize mySheet;
... и открыл его:
if (!serverSyncSheet) {
[NSBundle loadNibNamed:@"mySheetNibFile" owner:self];
}
[NSApp beginSheet: self.mySheet
modalForWindow: [[NSApp delegate] mainWindow]
modalDelegate: self
didEndSelector: NULL
contextInfo: NULL];
Есть идеи?
* РЕДАКТИРОВАТЬ *
Итак, получается, что я частично прав. Если я пытаюсь прочитать текстовое значение, оказывается, что оно устанавливает правильный текст, но лист не обновляется, чтобы ОТОБРАЗИТЬ изменение. Я подозреваю, что мне нужно сказать окну перерисовать... никогда не делал этого раньше. Вернуться к документам, чтобы посмотреть, смогу ли я найти его. Если кто-нибудь знает метод вызова, дайте мне знать.:) Спасибо!
1 ответ
Ну, мои подозрения были верны... это было что-то простое.
Мне просто пришлось перерисовать окно:
[mySheet display];
Doh!:)