2013-06-25 1 views
0

TableView создан в IB, и желательно, чтобы он имел только один столбец с флажками. Один из способов создания флажков, чтобы перетащить NSButtonCell в колонку с помощью IB, а затем в соответствии с протоколом NSTableViewDataSource реализации:В представлении таблицы с NSButtonCell в столбце, который создает NSButtonCell (s)?

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView 

Поэтому, когда объект класса выступает в качестве источника данных для столбца в TableView, и столбец содержит такие объекты, как флажки для каждой строки, является ли класс, предоставляющий только данные состояния включения/выключения для флажков, или он также предоставляет объекты флажка?

Связанные вопросы:

  1. Является TableView создания и содержащий NSButtonCells?
  2. Если ответ на 1 - да, как можно установить/изменить свойства NSButtonCell, например, его название?
  3. Вместо создания TableView, создающего и поддерживающего NSButtonCells, может ли класс источника данных создать их? То есть вместо того, чтобы использовать IB для перетаскивания NSButtonCell в столбец, можно ли добавить NSButtonCells в такой метод, как awakeFromNIB?
  4. Есть ли способ смешать типы объектов ячейки в данном столбце. Например, можно ли иметь текстовый заголовок в столбце1row1, а затем флажок в столбце1row2?

Спасибо.

ответ

0

Я думаю, вам трудно понять разницу между Model, View и контроллером.

Ваш объект класса должен действовать только как «Модель» - в вашем случае поставляются данные состояния включения/выключения. Ваш IB предоставляет часть «Просмотр», как правило, вы должны использовать его для создания любого пользовательского интерфейса. Класс класса View, который использует методы делегата/datsource tableview, является частью «Контроллер», и вы должны использовать его как посредник между View и Model.

Вы можете указать статус кнопки вместе с названием в своей модели. и может установить его в реализации контроллеров Delegate/datasource.

Да, вы можете создавать ячейки кнопок в контроллере, но избегайте этого, если это абсолютно необходимо.

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

+0

Я прекрасно понимаю модель, вид, контроллеры. Я думаю, что причина, по которой я не получил подробных ответов на мой вопрос (от вас или у кого-либо), состоит в том, что, возможно, подробности о TableView больше не известны. Мне пришлось смотреть на многие книги по какао, прежде чем я нашел тот, который, как я думаю, дает подробную информацию: Программирование Cocoa® Скотт Ангиш, Эрик М. Бак, Дональд А. Яктман (опубликовать дату 2002) имеет раздел о TableView, который дает подробности что ни одна из новых книг по какао, которые я рассматривал, по-видимому, не имеет. – bhartsb

+0

Я уже знаю, как установить состояние флажка. То, что я не знал, было вопросом № 2: как можно установить/изменить свойства NSButtonCell, например, его название? И по названию набора, я имею в виду, что флажок каждой ячейки (в одной таблице столбцов) имеет свой собственный заголовок, а не все из них с тем же названием. Тем не менее, как иметь строки в одном столбце в некоторых ячейках, флажок и другие ячейки содержат textfieldCell (например, для заголовков разделов для группировки строк флажков). – bhartsb

+0

В книге указано, что по умолчанию записи в таблице являются объектами NSTextFieldCell, с одним объектом ячейки для каждого столбца, который разделяется всеми строками этого столбца. Поэтому, чтобы установить заголовок флажка, вы должны: a) подкласс NSTableColumn, b) переопределить метод - (id) dataCellForRow: (int) row, а в теле этого переопределенного метода получить общий объект ячейки столбца (в в этом случае флажок NSButtonCell перетащил в colummn в IB) из суперкласса и установил уникальный заголовок. – bhartsb

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

  • Нет связанных вопросов^_^