Objective-Cでは、私のプログラムはウィンドウを開き、テーブルを表示します。表の指定された行を強調表示したい。
どうすればいいですか?
私はコードが必要なようです
[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];
開発者のドキュメントを見て、BOOLがNOであることを理解しました。
NSIndexSetのドキュメントを見ると、正しい構文がどうあるべきかわかりません。
それは適切な方法でしょう:
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)];
または、ランダムインデックスにNSMutableIndexSet
を使用できます。
NSMutableIndexSet *mutableIndexSet = [[NSMutableIndexSet alloc] init];
[mutableIndexSet addIndex:0];
[mutableIndexSet addIndex:2];
[mutableIndexSet addIndex:9];
等.
デバッガーでNSIndexSet
を印刷すると、それらが内部的にNSRange
sであることがわかります。範囲を作成するには、範囲または単一の明示的なインデックス(範囲の作成元)を指定できます。何かのようなもの
NSIndexSet *indexes = [[NSIndexSet alloc] initWithIndex:rowToHighlight];
[myTableView selectRowIndexes:indexes byExtendingSelection:NO];
[indexes release];
インデックスはすべて符号なし整数(NSUIntegers
、具体的には)でなければならないことに注意してください。
ファクトリメソッドを使用して、メモリを管理する必要を回避します。
[myTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexes]
byExtendingSelection:NO];
私はコードが必要なようです
[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];
番号;これらはキャストするものが何もないキャストであり、無効です。
キャストを削除し、代わりに値を入れてください。
開発者のドキュメントを見て、
BOOL
がNO
である必要があることがわかりました。
はい、選択範囲を拡張したくないので、置き換えます。
NSIndexSetのドキュメントを見ると、正しい構文がどうあるべきかわかりません。
他の変数またはメッセージ式を渡す場合と同じです。
インデックスセットを作成し、それを変数に格納して渡すか、作成メッセージの結果を直接渡す必要があります。