如何使用 NSIndexSet

发布于 2024-10-08 19:51:36 字数 268 浏览 5 评论 0原文

在 Objective-C 中,我的程序打开一个窗口并显示一个表格。我想要突出显示表格的指定行。

我该怎么做?

我似乎需要我查看开发人员文档的代码

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

,并发现 BOOL 应该是 NO。

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

In Objective-C, my program opens a window and displays a table. I want to have a specified row of the table highlighted.

How do I do this?

I seem to need the code

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

I looked at the developer documentation, and figured out that the BOOL should be NO.

By looking at the NSIndexSet docs, I can't figure out what the right syntax should be.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

人│生佛魔见 2024-10-15 19:51:36

这将是正确的方法:

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

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

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

等等。

it would be the proper way:

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

or you can use the NSMutableIndexSet for the random indexes:

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

etc.

半衬遮猫 2024-10-15 19:51:36

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

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

,索引必须全部是无符号整数(特别是NSUIntegers)。

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).

猥琐帝 2024-10-15 19:51:36

我会使用工厂方法来避免管理内存:

[myTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexes] 
         byExtendingSelection:NO];

I'd use a factory method to avoid having to manage memory:

[myTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexes] 
         byExtendingSelection:NO];
路还长,别太狂 2024-10-15 19:51:36

我似乎需要代码

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

不;这些是没有任何可转换的转换,这是无效的。

删除强制转换并将值放在那里。

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

是的,因为您不想扩展选择,所以想要替换它。

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

与传递任何其他变量或消息表达式相同。

您需要创建一个索引集,然后将其存储在变量中并传递该索引集,或者直接传递创建消息的结果。

I seem to need the code

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

No; those are casts without anything to cast, which is invalid.

Remove the casts and put values there instead.

I looked at the developer documentation, and figured out that the BOOL should be NO.

Yes, because you don't want to extend the selection, you want to replace it.

By looking at the NSIndexSet docs, I can't figure out what the right syntax should be.

The same as for passing any other variable or message expression.

You need to create an index set and then either stash it in a variable and pass that or pass the result of the creation message directly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文