NSTableView - 禁用行选择

eri*_*icg 19 cocoa selection nstableview

我有一个NSTableView,我想禁用行选择.

表视图的列绑定到a,NSArrayController并且数组的内容确实显示在表视图中.

我怎么能这样做bindings呢?

小智 23

我想你需要使用TableViewDelegate并实现

- (NSIndexSet *)tableView:(NSTableView *)tableView 
    selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes
Run Code Online (Sandbox Code Playgroud)


Dav*_*las 15

虽然之前的答案有效,但这是我更喜欢使用的另一种选择:

- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
{
    return NO;
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*non 13

我认为

- (BOOL)selectionShouldChangeInTableView:(NSTableView *)aTableView
{
  return NO;
}
Run Code Online (Sandbox Code Playgroud)

比...更好

- (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes
Run Code Online (Sandbox Code Playgroud)

  • 您可以在头文件中读取:"为了更好的性能和更好地控制选择,您应该使用tableView:selectionIndexesForProposedSelection:". (2认同)

Sup*_*off 7

Swift 4.0

func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
    return false
}
Run Code Online (Sandbox Code Playgroud)