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

在调试器中打印出 anNSIndexSet将显示它们在内部NSRange是 s。要创建一个,您可以指定范围或单个显式索引(它将从中创建范围);就像是

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

请注意,索引必须都是无符号整数(NSUIntegers特别是 )。

于 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 回答