Я создал подклассы NSTableView и NSTableColumn, и я хочу контролировать процесс редактирования ячеек таблицы.
У меня есть 2 состояния для моего класса таблицы: издание и не редакция. независимо от состояния таблицы, когда пользователь выбирает строку, она должна быть выделена поверх.
если таблица находится в государственной редакции, элементы управления, соответствующие выбранной строке, должны быть видны.
Я использую функцию rowview, чтобы сделать это возможным, но безуспешно. 1, когда я нажимаю на текстовую ячейку ячейки, элемент управления появляется всегда. 2, когда вызывается функция rowview, я не понимаю значение параметра row. Иногда это правильно, иногда неправильно.
это кто-то может мне помочь?
это очень долгая история. Фактически, я делю подклассы всех компонентов управления яблоком, потому что хочу, чтобы они взаимодействовали друг с другом по-своему. Я устал писать и переписывать код, поэтому я написал эти подклассовые компоненты. И работает отлично, за исключением того, что я недавно поместил их в капсулу. И при создании этого модуля реакция tableview не такая же. Например, я переопределил функцию rowView (atRow row: Int, makeIfNeeded: Bool), и когда я выбираю первую строку, эта функция вызывается системой со значением row, равным 1, а не 0.
Я хочу сделать точность: чтобы просто проверить, в моем подклассе 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"
Почему вы создали подклассы
NSTableView
иNSTableColumn
и какие методы вы переопределили? Какие методыNSTableViewDelegate
реализованы? Где находятся элементы управления, внутри каждой строки или вне табличного представления?