2014-02-03 3 views
0

У меня есть NSWindowController как часть рабочего потока с NSDocument. NSWindowController имеет связанный xib с парой NSTableViews. Источником данных для этих табличных представлений является модель, определяемая NSDocument. Кажется, мне не хватает информации о настройке торговых точек. Если я настрою все выходы внутри IB, источники данных создаются во время создания экземпляра с его стандартными методами init, которые не знают о модели. К моменту, когда вызывается awakeFromNib, источник данных уже запрошен табличным представлением (numberOfRowsInTableView). Моя работа - не подключать выходы для источника данных. Я получаю информацию о модели в setDocument и устанавливаю делегаты в windowDidLoad. Кажется, это работает. Как передать модель данных при настройке источника данных tableview с IB? Поскольку выходы не создаются при вызове init (в источнике данных tableview), как бы я вызвался, чтобы получить модель?NSTableView делегат внутри Nib

Заранее спасибо.

+0

Почему бы не установить документ в качестве источника данных? – Volker

+0

@ Volker - У меня несколько таблиц. В конечном итоге документ является источником данных. Я бы не хотел тестировать таблицу, называемую источником данных, поэтому я создал отдельные объекты данных для каждой таблицы. – Bill

ответ

0

Там в явное примечание в NSTabelView documentation:

Важно: Возможно, что ваши методы источника данных для заполнения вид таблицы может быть вызвана перед awakeFromNib вызывается, если данные источник указан в Interface Builder , Вы должны защититься от , указав номер источника данныхOofRowsInTableView: метод возвращает 0 для количества строк, когда источник данных еще не был настроен . В awakeFromNib, когда источник данных инициализирован, вы должны всегда вызывать reloadData в представлении таблицы.

+0

Как указано в других сообщениях SO, awakeFromNib можно вызывать более одного раза, когда цепочка объектов получает экземпляр из ниба. Я предполагаю, что мой вопрос был действительно: «Есть ли способ, чтобы IB не вызывал init на некоторые объекты, но пусть какой-то другой более ранний процесс создает их с помощью специальных методов init и может ли IB подключить эти объекты?» – Bill

+0

Я не знаю, как изменить процесс создания экземпляра. Но вместо того, чтобы бороться с системой, я бы сделал обычные соединения и все такое и действую в awakeFromNib, поскольку мне это нужно. –

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