NSTableView - отключить выбор строки - PullRequest
18 голосов
/ 02 сентября 2011

У меня есть NSTableView, и я хочу отключить выбор строки.

Столбцы табличного представления связаны с NSArrayController, и содержимое массива действительно отображается в табличном представлении.

Как я могу сделать это, просто используя bindings?

Ответы [ 7 ]

23 голосов
/ 02 сентября 2011

Я думаю, вам нужно использовать TableViewDelegate и реализовать

- (NSIndexSet *)tableView:(NSTableView *)tableView 
    selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes
15 голосов
/ 18 января 2014

Пока работают предыдущие ответы, я предпочитаю использовать еще один вариант:

- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
{
    return NO;
}
13 голосов
/ 31 июля 2012

Я думаю

- (BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView
{
  return NO;
}

лучше, чем

- (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes
7 голосов
/ 25 апреля 2018

Swift 4.0

func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
    return false
}
1 голос
/ 04 августа 2015

Как примечание для потомков ...

Если вы объявите selectionIndexesForProposedSelection, то функция shouldSelectRow будет проигнорирована.На тот случай, если вам интересно, как я это сделал, почему мои правки в shouldSelectRow не дали эффекта ...

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSTableViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/NSTableViewDelegate/tableView:selectionIndexesForProposedSelection:

0 голосов
/ 23 апреля 2019

Использование привязки:

Другой подход заключается в выборе «пусто» в списке флажков, соответствующих «Выделению» в Инспекторе атрибутов представления таблицы.Это не будет выбирать какие-либо строки по умолчанию.

В дополнение к этому, установите для подсветки значение «Нет».

снимок экрана инспектора атрибутов

0 голосов
/ 10 апреля 2019

Использование привязки:

В случае привязки вы можете связать логическое значение с помощью Enabled. Инспектор привязок

Если значение в примере истинно, оно может быть выбрано, иначе - нет.Таким образом, нам не нужно использовать делегаты только для отключения выбора, когда все остальное выполняется через привязку.

...