У меня есть NSTableView, который создается программно.У меня есть несколько вариантов настройки ячеек в каждом столбце в зависимости от типа столбца и источника данных (т. Е. Очень легко иметь кнопки или флажки в зависимости от типа столбца и того, что находится в источнике данных).
Теперь ямне нужно иметь возможность полностью настроить ячейку, поэтому я пытаюсь загрузить NSView из xib и вернуть его из метода viewForTableColumn делегата таблиц.Я не очень часто использовал IB за пределами iOS, и я не очень хорошо разбираюсь в том, как следует устанавливать различные выходы и типы классов, особенно когда большая часть пользовательского интерфейса создается за пределами IB.Я читал много постов здесь и на других сайтах, но в большинстве примеров либо создается весь пользовательский интерфейс в IB, либо нет.
В настоящее время у меня есть TestCell.xib, который был создан путем выбора View из NewФайл диалога.Я также создал класс target-c под названием TestCell.В IB я установил класс представления на TestCell и перетащил выходы для элемента управления меткой и кнопки в класс TestCell.
В классе делегата таблицы у меня есть следующее:
- (NSView*)tableView:(NSTableView*)tableView viewForTableColumn:(NSTableColumn*)tableColumn row:(NSInteger)row {
NSView* view = [tableView makeViewWithIdentifier:customRowXibName owner:self];
if( view == nil ) {
NSArray* nibObjects = nil;
if( [[NSBundle mainBundle] loadNibNamed:customRowXibName owner:self topLevelObjects:&nibObjects] ) {
view = [nibObjects lastObject];
}
}
return view;
}
Однако табличное представление ничего не показывает.Я также получаю следующие ошибки для обоих элементов управления в представлении при загрузке xib:
Failed to connect (button) outlet from (TableListViewDelegate) to (NSButton): missing setter or instance variable
Я предполагаю, что это потому, что я устанавливаю владельца self при загрузке xib.
Мои вопросы:
- В IB, на что должен быть установлен заполнитель Владелец файла?В настоящее время установлено значение TestCell, но я не верю, что это правильно.
- Можно ли использовать «TestCell» в качестве идентификатора?Нужно ли устанавливать этот идентификатор в IB?Или мне нужно вызвать registerNib: forIdentifier для табличного представления?
- При вызове loadNibNamed, какой владелец должен быть установлен?