2010-03-21 7 views
1

У меня есть XIB установить, как на этом скриншоте: владелецXIB-экземпляра объекта является нулевым

alt text http://emberapp.com/jxpx777/images/interface-builder/sizes/m.png

файла мой главный контроллер окна. XIB также отвечает за создание объекта, который служит делегатом для представления MGScopeBar. Как вы можете видеть на скриншоте, делегат области видимости области имеет поле IBOutlet для поля поиска, чтобы он мог вернуть его в качестве дополнительного представления как часть процесса делегирования.

Проблема, с которой я сталкиваюсь, заключается в том, что когда объект делегата запрашивается для аксессуара, IBOutletNSSearchField равен нулю. Я вполне уверен, что это связано с порядком создания объектов, подключением IBOutlets и т. Д., Но я немного потерял информацию о том, где в процессе я могу ожидать, что поле поиска будет существовать, чтобы панель области видимости делегат может ссылаться на него должным образом.

Заранее благодарим за любые указатели.

ответ

6

Per Apple's documentation, похоже, все выходы в NIB/XIB которые должны быть подключены до того awakeFromNib называется на любой объект в этом NIB/XIB, но магазинов вероятно не подключены, когда init и т.д. ., вызываются на объекты.

+1

Нет «вероятно» об этом. Розетки устанавливаются через KVC (iPhone) или поведение очень похоже на это (Mac). Это может произойти только после того, как * объект был выделен * и * инициализирован. Подумайте, как это сделать, если вы выполняете загрузчик nib; это будет что-то вроде: 'id instance = [[[objectClass alloc] initWithCoder: unarchiver] autorelease]; for (NSString * k в objectOutlets) [instance setValue: [objectOutlets objectForKey: k] forKey: k]; [instance awakeFromNib]; 'Обратите внимание, что' initWithCoder: 'возвращается до начала установки; при запуске 'initWithCoder:' не установлено никаких выходов. –