2015-09-12 2 views
1

Я ищу способ программно помещать флажок в первом столбце NSTableView. Я хочу сделать это в Свифте. Мне нужно иметь возможность читать значения всех кнопок и устанавливать кнопку, когда кто-то нажимает на строку.Как вы установите и установите флажок в NSTableView?

Есть ли простой способ сделать это? Я не могу найти его ...

ответ

1

Вам нужно, чтобы представление таблицы было основано на представлении, а не на ядре. Самый простой способ IMHO - установить флажок в первый столбец вашего табличного представления с помощью построителя интерфейса. Он должен быть родным из вашего текстового поля. Я предполагаю, что вы хотите, чтобы первый столбец просто содержал флажок, и ничего больше. В этом случае вам нужно скрыть текстовое поле, чтобы оно не мешало этому флажку (установите флажок «скрытый» в построителе интерфейса для текстового поля).

Вариант 1: создать подкласс NSTableCellView, назовите его MyTableCellViewWithCheckbox, и дать ему @property (nonatomic,strong) NSButton *checkbox; Измените поле пользовательского класса из NSTableCellView в MyTableCellViewWithCheckbox для первой колонки и подключите к сетевой розетке.

Вариант 2: (я еще не протестировал его, но думаю, что он должен работать.) Установите метку флажка на 13. Чтобы извлечь флажок позже из ячейки представления таблицы, вы можете использовать метод viewWithTag ,

Далее необходимо приложить действия к вашему флажку, так что вы должны создать IBAction на ваш контроллер представления (не на MyTableCellViewWithCheckbox.) В остросюжетном методе вы можете использовать tableviews rowForView метод, чтобы получить индекс строки, флажок, который пользователь просто нажал. Новое состояние может быть получено непосредственно от отправителя действия (это NSButton).

Кроме того, не забывайте, что awakeFromNib может быть вызван несколько раз в вашем контроллере вида, если у вас есть вид таблицы в нем - один раз для каждой ячейки представления таблицы, которую вы создаете (это заняло у меня некоторое время, чтобы разобраться.)

+0

Благодарим вас за информацию. Я действительно смог сделать это с помощью NSView на базе сотовой сети, и он быстрее, чем на основе таблиц. Я постараюсь ответить также. – vy32

1

Я смог сделать это с помощью NSTableView на основе ячеек. Сделайте TableView выглядеть следующим образом: Table View in Interface builder

Установите TableColumn, чтобы выглядеть следующим образом:

tableCOlumn

Установите buttonView выглядеть следующим образом:

enter image description here

Установите флажок путем получения func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? возврата 1 для проверки и 0 для не-проверки.

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