【问题标题】:How to use NSIndexSet如何使用 NSIndexSet
【发布时间】:2010-12-19 23:35:05
【问题描述】:

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

我该怎么做?

我好像需要密码

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

我查看了开发者文档,发现 BOOL 应该是 NO。

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

【问题讨论】:

    标签: cocoa foundation nsindexset


    【解决方案1】:

    这将是正确的方式:

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

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

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

    等等

    【讨论】:

    • +1 用于使用NSMakeRange()。本能是寻找像NSRangeMake() 这样的东西,不幸的是它不存在。
    • 亲爱的投反对票的人!我很荣幸能得到一些反馈,说明为什么你的手在否决投票按钮上方颤抖并最终点击它,因为——不管你信不信——我不是一个读心术的人来弄清楚它。谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

    • 索引集不一定是单个连续范围。您可以使用单个索引或范围创建不可变索引集,但您可以使用可变索引集创建涵盖零个或多个单个索引和零个或多个范围的任意组合的索引集,当然,您然后可以制作一个如此定制的索引集的不可变副本。
    • 绝对的;我特别说它们内部是复数形式的 NSRange。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      我好像需要密码

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

      没有;那些是没有任何东西可以转换的转换,这是无效的。

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

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

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

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

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

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

      【讨论】:

      • re: 没有任何东西可以投射:我认为他只是在复制(或视觉上复制)Xcode 生成的占位符代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多