сделать так, чтобы строка NSTableView оставалась выбранной Swift - PullRequest
0 голосов
/ 25 апреля 2018

как мне сделать так, чтобы ранее выбранный ряд NSTableView оставался выбранным после того, как пользователь нажмет кнопку, вызывающую метод для работы с этим selectedRow?

В предыдущей программе это работало так:

selectedRow stays selected

выделение этого дает ему цвет выделения 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 основан на представлении.

Спасибо за любую помощь!

...