一次显示一定数量的行,单击按钮,显示更多

时间:2012-08-24 13:52:13

标签: objective-c ios uitableview loaddata

我非常坚持这个问题。我有一个NSArray *列表,其中包含来自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];
}
}

2 个答案:

答案 0 :(得分:2)

选择一个阵列,您将add 20 elements from plist

设置numberOfRowsInSection = [array count]

检查plist中的numberOfRowsInSection < totalNumberOfRecords是否为increment numberOfRowsInSection by 1.

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

然后再添加"LoadMore Cell"

答案 1 :(得分:1)

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

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