Управление редактированием в NSTableView

Я создал подклассы NSTableView и NSTableColumn, и я хочу контролировать процесс редактирования ячеек таблицы.

У меня есть 2 состояния для моего класса таблицы: издание и не редакция. независимо от состояния таблицы, когда пользователь выбирает строку, она должна быть выделена поверх.

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

Я использую функцию rowview, чтобы сделать это возможным, но безуспешно. 1, когда я нажимаю на текстовую ячейку ячейки, элемент управления появляется всегда. 2, когда вызывается функция rowview, я не понимаю значение параметра row. Иногда это правильно, иногда неправильно.

это кто-то может мне помочь?

Почему вы создали подклассы NSTableView и NSTableColumn и какие методы вы переопределили? Какие методы NSTableViewDelegate реализованы? Где находятся элементы управления, внутри каждой строки или вне табличного представления?

Willeke 13.09.2018 16:36

это очень долгая история. Фактически, я делю подклассы всех компонентов управления яблоком, потому что хочу, чтобы они взаимодействовали друг с другом по-своему. Я устал писать и переписывать код, поэтому я написал эти подклассовые компоненты. И работает отлично, за исключением того, что я недавно поместил их в капсулу. И при создании этого модуля реакция tableview не такая же. Например, я переопределил функцию rowView (atRow row: Int, makeIfNeeded: Bool), и когда я выбираю первую строку, эта функция вызывается системой со значением row, равным 1, а не 0.

Patrice Rapaport 14.09.2018 04:16
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
37
1

Ответы 1

Я хочу сделать точность: чтобы просто проверить, в моем подклассе NSTableView я пишу этот код: override func rowView(atRow row: Int, makeIfNecessary: Bool) -> NSTableRowView? { let aRow = super.rowView (atRow: row, makeIfNecessary: makeIfNecessary) if aRow != nil { Swift.print("rowview is called for row (row)") } return aRow }

Когда я нажимаю на строку 0, я получаю следующий результат: «rowview вызывается для строки 1» Затем, когда я нажимаю на строку 1: "rowview вызывается для строки 1 rowview вызывается для строки 0 rowview вызывается для строки 2"

Другие вопросы по теме