2011-09-02 81 views
17

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

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

我该如何使用bindings来做到这一点?

回答

21

我认为你需要使用TableViewDelegate和实施

- (NSIndexSet *)tableView:(NSTableView *)tableView 
    selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes 
+0

也许,但我希望这不会是这样...... – ericg

+0

{返回0 ; } 我相信?似乎工作。 –

13

我觉得

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

优于

- (NSIndexSet *)tableView:(NSTableView *)tableView selectionIndexesForProposedSelection:(NSIndexSet *)proposedSelectionIndexes 
+2

您可以在头文件中阅读:“为了获得更好的性能并更好地控制选择,应该使用tableView:selectionIndexesForProposedSelection :.” – Stephan

14

虽然以前的答案工作,这是另一个我更喜欢使用的选项:

- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex 
{ 
    return NO; 
} 
+0

这实际上是您想要的方法,如果您想禁用某些行而不选择其他 –