1

我只想显示数组中的一些项目,但不知道该怎么做。

这是我目前显示数组中所有对象的代码:

@property (strong, nonatomic) NSArray *springs;
@property (strong, nonatomic) NSMutableArray *leafs;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"standardCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    Spring *spring = [springs objectAtIndex:indexPath.section];  // 13 objects
    Leaf *leaf = [spring.leafs objectAtIndex:indexPath.row];  // 30 objects

    cell.textLabel.text = league.shortName;
    return cell;
}

所以我想只显示我创建的数组中的 30 个叶子对象中的 5 个,而不是全部显示。有没有办法做到这一点?

(我正在使用 API 将项目拉入数组)

感谢您的帮助,将发布所需的任何特定代码或其他信息!

编辑 根据请求添加:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    Spring *spring = [springs objectAtIndex:section];
    return spring.leafs.count;
}

我正在使用 RestKit 进行对象映射。

4

2 回答 2

2

使用[NSArray objectsAtIndexes:]( reference ) 获取数组的子集。

Leaf *leaf = [spring.leafs objectAtIndex:indexPath.row]; 

// This will include objects 0-4:
NSRange range = NSMakeRange(0, 5);
NSArray *subset = [leaf objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:range]];

只需调整range到子集中您想要的任何开始/长度。

编辑:当然,此方法中的任何子集逻辑也必须在numberOfRowsInSection:委托方法中复制,否则您的应用程序将引发异常。

于 2013-05-09T20:34:20.193 回答
1

在你的tableView:numberOfRowsInSection,不要返回一个完整的spring.leafs怎么样?例如,

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 5;
}

您是要延迟加载它们,还是其余的都无关紧要?祝你好运。

于 2013-05-09T20:30:16.283 回答