如何使用NSIndexSet

her*_*erd 29 cocoa foundation nsindexset

在Objective-C中,我的程序打开一个窗口并显示一个表.我希望突出显示表的指定行.

我该怎么做呢?

我似乎需要代码

[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];
Run Code Online (Sandbox Code Playgroud)

我查看了开发人员文档,并发现BOOL应该是NO.

通过查看NSIndexSet文档,我无法弄清楚正确的语法应该是什么.

hol*_*lex 74

这将是正确的方式:

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)];
Run Code Online (Sandbox Code Playgroud)

或者您可以使用NSMutableIndexSet随机索引:

NSMutableIndexSet *mutableIndexSet = [[NSMutableIndexSet alloc] init];
[mutableIndexSet addIndex:0];
[mutableIndexSet addIndex:2];
[mutableIndexSet addIndex:9];
Run Code Online (Sandbox Code Playgroud)

等等

  • 亲爱的**选民**!我很荣幸得到一些反馈,说明为什么你的双手在选民按钮上方摇晃并最终点击它,因为 - 你相信与否 - 我不是一个心灵读者去弄清楚它.谢谢! (11认同)

Ric*_*ard 5

NSIndexSet在调试器中打印出来会告诉你它们是内部NSRange的.要创建一个,您可以指定范围或单个显式索引(从中创建范围); 就像是

NSIndexSet *indexes = [[NSIndexSet alloc] initWithIndex:rowToHighlight];
[myTableView selectRowIndexes:indexes byExtendingSelection:NO];
[indexes release];
Run Code Online (Sandbox Code Playgroud)

请注意,索引必须都是无符号整数(NSUIntegers具体而言).

  • 索引集不一定是单个连续范围.您可以使用单个索引或范围创建不可变索引集,但是您可以使用可变索引集来创建涵盖零个或多个单个索引以及零个或多个范围的任意组合的索引集 - 当然,您然后可以创建一个自定义的索引集的不可变副本. (2认同)