2011-09-02 24 views
17

私はNSTableViewを持っていて、行の選択を無効にします。NSTableView - 行の選択を無効にする

テーブルビューの列はNSArrayControllerにバインドされており、配列の内容はテーブルビューに表示されます。

bindingsを使用するとどうすればよいですか?

答えて

21

私はあなたが、私は以前の回答が動作している間

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

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

が、私はこのケースではないでしょう期待していた... – ericg

+0

{0を返します; } 私は推測します?仕事をしているようだ。 –

13

を実装する必要があると思う、これは私が使用したい別のオプション:

後世への注意点としては
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex 
{ 
    return NO; 
} 
+2

ヘッダーファイルを読むことができます。「パフォーマンスを向上させ、選択範囲をコントロールするには、tableView:selectionIndexesForProposedSelection:を使用する必要があります。 – Stephan

14

よりも優れていると思うTableViewDelegateを使用して

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

これは、実際には、一部の行を無効にし、他の行を選択しない場合に必要な方法です –

0

...

あなたがselectionIndexesForProposedSelectionを宣言する場合は、shouldSelectRow機能は無視されます。念のためにshouldSelectRowに私の編集は効果がなかった、なぜ私が行ったようにあなたが

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSTableViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/NSTableViewDelegate/tableView:selectionIndexesForProposedSelection ...迷っている:おそらく

関連する問題