2013-05-15 2 views
0

Я пытаюсь создать простое приложение Mac OS X, которое отображает вывод текста, который записывается в мою программу. Вот что я сделал:Правильный способ подключения NSTextField

1) Создан проект Mac OS X UI

2) Добавлен компонент "Text Field" в середине окна приложения в MainMenu.xib

3) Добавлено новый класс «MainWindow.m» со следующим свойством:

@property (assign) IBOutlet NSTextField *mainWindowText; 

4) подключен вверх «REFERENCING розетка» из компонента текстового поля к свойству. Теперь я вижу серая точка слева от указанной выше строки кода

5) В моем приложении я создаю новый поток, который создает экземпляр MainWindow. Затем я жду 5 секунд и попытаюсь получить доступ к переменной mainWindowText выше, но она всегда равна нулю. Я ожидал переменную non-null, поэтому я мог бы вызвать setStringValue: и в любой момент изменить текст.

Я попытался сделать что-то подобное с doText: и я могу видеть обратный вызов, когда я нажимаю enter, и пишу там текст. Однако мне нужен способ изменить текст в произвольное время, и я подумал, что указанное свойство было правильным.

Я также попытался добавить оператор @synthesize, но это не повлияло.

Любые предложения?

Обновление: после чтения некоторых сообщений, я думаю, проблема в том, что я работаю с неправильным объектом mainWindow. Я попытался создать NSObject в NIB и создать свой собственный тип класса mainWindow и создал IBOutlet (тип MainWindow *) в одном из моих других классов, но он не позволил мне подключить эти две вещи, поэтому я не уверен, как для доступа к этому объекту NSObject, который я добавил в NIB.

ответ

0

В файле NIB есть владелец - это класс, который вы хотите использовать для этого. Образом все должно работать это:

  1. Созданием экземпляра класса (владелец, с выходом)
  2. Во время инициализации этого класса загружает файл NIB
  3. Поскольку файл NIB загружаются ссылки выпускных конфигурируются
  4. обратного вызова пожаров (awakeFromNib), чтобы сообщить владельцу все конфигурации делается

После того, что это полная, то вы можете получить доступ к розеткам.

Из первоначального проекта у вас должен быть файл NIB и класс, который является его владельцем, поэтому вы должны использовать его для выполнения своих контрольных задач (конечно, пока не получите больше опыта с архивами NIB).

Смежные вопросы