32

Objective-C では、私のプログラムはウィンドウを開いてテーブルを表示します。テーブルの特定の行を強調表示したい。

どうすればいいですか?

コードが必要なようです

[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];

開発者のドキュメントを見て、BOOL は NO であるべきだとわかりました。

NSIndexSet のドキュメントを見ると、正しい構文がどうあるべきかわかりません。

4

4 に答える 4

82

それは適切な方法です:

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)];

NSMutableIndexSetまたは、ランダム インデックスにを使用できます。

NSMutableIndexSet *mutableIndexSet = [[NSMutableIndexSet alloc] init];
[mutableIndexSet addIndex:0];
[mutableIndexSet addIndex:2];
[mutableIndexSet addIndex:9];

于 2012-04-26T15:16:39.470 に答える
5

Printing out an NSIndexSet in the debugger will show you that they are internally NSRanges. To create one, you can either specify the range or a single explicit index (from which it will create the range); something like

NSIndexSet *indexes = [[NSIndexSet alloc] initWithIndex:rowToHighlight];
[myTableView selectRowIndexes:indexes byExtendingSelection:NO];
[indexes release];

Note that the index(es) must all be unsigned integers (NSUIntegers, specifically).

于 2010-12-19T23:49:47.853 に答える
4

メモリを管理する必要がないように、ファクトリ メソッドを使用します。

[myTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexes] 
         byExtendingSelection:NO];
于 2010-12-20T00:36:57.080 に答える
0

コードが必要なようです

[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];

いいえ; これらはキャストするものがないキャストであり、無効です。

キャストを削除し、代わりに値を入れてください。

BOOL私は開発者向けドキュメントを見て、NO.

はい、選択を拡張したくないので、置き換えたいと思います。

NSIndexSet のドキュメントを見ると、正しい構文がどうあるべきかわかりません。

他の変数またはメッセージ式を渡す場合と同じです。

インデックス セットを作成し、それを変数に格納してそれを渡すか、作成メッセージの結果を直接渡す必要があります。

于 2010-12-20T01:05:34.873 に答える