首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用NSTableView的selectedRowIndexes?

如何使用NSTableView的selectedRowIndexes?
EN

Stack Overflow用户
提问于 2010-05-16 18:07:47
回答 2查看 2.9K关注 0票数 4

我只是在学习一些Objective C和Cocoa的基本编程。我正试着从NSTableView那里获取一些数据。根据我在一篇教程中读到的内容,我写了以下内容:

代码语言:javascript
运行
复制
NSArray * items = [[itemsTableView selectedRowEnumerator] allObjects];

但是后来我了解到在10.3Panther中selectedRowEnumerator已经被弃用了,我应该使用selectedRowIndexes

问题是,我不知道如何实际使用返回的NSIndexSet来实现与上面编写的代码相同的结果。

所以,如果有人能给我一个建议,我将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-16 20:00:22

您可以像这样遍历NSIndexSet的索引:

代码语言:javascript
运行
复制
- (void) goThroughIndexSet:(NSIndexSet *) anIndexSet
{
    NSUInteger idx = [anIndexSet firstIndex];

    while (idx != NSNotFound)
    {
        // do work with "idx"
        NSLog (@"The current index is %u", idx);

        // get the next index in the set
        idx = [anIndexSet indexGreaterThanIndex:idx];
    }

    // all done
}
票数 2
EN

Stack Overflow用户

发布于 2016-09-30 20:22:38

为了更清楚地说明,

代码语言:javascript
运行
复制
    NSIndexSet *selectedRows = [MyTableView selectedRowIndexes];
    NSUInteger numberOfSelectedRows = [selectedRows count];
    NSUInteger indexBuffer[numberOfSelectedRows];

    NSUInteger limit = [selectedRows getIndexes:indexBuffer maxCount:numberOfSelectedRows inIndexRange:NULL];

    for (unsigned iterator = 0; iterator < limit; iterator++)
    {
        MyObject  *object = [ myDataSource objectAtIndex:indexBuffer[iterator] ];

        NSLog(@"Object at index: %lu", (unsigned long) indexBuffer[iterator] );
        NSLog(@"Object selected: %@", [object description]);
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2843294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档