0

我很坚持这个问题。我有一个 NSArray *list 包含来自 plist 文件的 70 个元素。现在我需要将它们填充到 UITableView。我想要的是一次显示 20 个项目,然后单击第 21 个单元格以显示另外 20 个 ..然后按第 41 个单元格以显示另外 20 个项目...等等,直到所有 72 个单元格显示..

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    return 20;

}



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

static NSString *addCellID = @"addMoreCell";
UITableViewCell *addCell = [tableView dequeueReusableCellWithIdentifier:addCellID];

if (indexPath.row == 0) {
    static NSString *CellIdentifier = @"labelCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    return cell;
} else if (indexPath.row < 25){
    NSDictionary *dic = [self.list objectAtIndex:indexPath.row];
    cell.textLabel.text = [dic objectForKey:@"Title"];
    cell.detailTextLabel.text = [dic objectForKey:@"Tips"];
    return cell;
} else {
    if (cell == nil) {
        addCell.textLabel.text = @"Load More...";
        return cell;
    }
}
}


- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == 20)
{
    [self.tableView reloadData];
}
}
4

2 回答 2

2

取一个数组,您将在其中add 20 elements from plist, 和

设置numberOfRowsInSection = [array count]

检查是否numberOfRowsInSection < totalNumberOfRecords在 plist 中,如果小于,则increment numberOfRowsInSection by 1.

并在 cellForRowAtIndexPath 检查if (indexPath.row < totalNumberOfRecords -2 && indexPath.row < numberOfRowsInSection-1)

然后添加"LoadMore Cell"其他不。

于 2012-08-24T15:20:33.377 回答
1

所以我做了一些非常相似的事情。您有一个包含 70 个字符串(或字典)的数组要显示在表中。'numberOfRowsInSection:' 应该使用最初设置为 20 的 ivar。

当您的按钮被按下时,您将 ivar 增加 20(但不超过实际数据量!),您重新加载表格,然后您可以使用 tableView 方法将表格向上滚动到“新”单元格。

于 2012-08-24T14:01:01.180 回答