2011-09-02 78 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

這實際上是您想要的方法,如果您想禁用某些行而不選擇其他 –