как мне сделать так, чтобы ранее выбранный ряд NSTableView оставался выбранным после того, как пользователь нажмет кнопку, вызывающую метод для работы с этим selectedRow?
В предыдущей программе это работало так:
![selectedRow stays selected](https://i.stack.imgur.com/eGDgZ.png)
выделение этого дает ему цвет выделения OSX, нажатие кнопки сохранения превращает textField в становлениеFirstResponder (), которое автоматически окрашивает строку в серый цвет и не меняет свойство selectedRow. Это не сделано моим кодом, поэтому я рад, что он просто работает.
Теперь в аналогичной программе я хочу добиться именно этого, но после нажатия кнопки (вызова метода, заставляющего textField становиться сталиFirstResponder ()) визуальный выбор исчезает, а также свойство tableView selectedRow возвращается к -1 (без строки выбран).
Я испробовал много идей, большинство ответов онлайн - цель-C. Вот мой самый последний код (вызываемый одной и той же кнопкой и почти полностью имитирующий то, что раньше работало автоматически):
метод NSTableViewAction и переменная selectedRowCache:
var selectedRowCache = -1
@IBAction func alarmDataTableView(_ sender: NSTableView) {
selectedRowCache = alarmDataTableView.selectedRow
}
Кнопка действия:
@IBAction func editAlarmButton(_ sender: NSButton) {
let row = alarmDataTableView.rowView(atRow: self.selectedRowCache, makeIfNecessary: false)
row?.backgroundColor = .blue
}
selectedRowCache - это просто переменная, которая сохраняет selectedRow всякий раз, когда пользователь выбирает строку (я этого не хочу).
нет с этим кодом, цвет фона строки ничего не делает (кроме потери его выделения после вызова метода кнопки).
NSTableView основан на представлении.
Спасибо за любую помощь!