iPhone加载更多tableViewCell

时间:2010-11-03 17:10:49

标签: iphone objective-c ipad ios

所以我有一个设计问题。基本上我有一个应用程序,我在应用程序加载时从服务器中获取20个项目,并在表格视图中显示它们。我还有一个加载表格单元格出现在最后一个单元格中。我想要做的是当该单元格出现时,加载接下来的20个项目并将它们添加到列表中并重新加载表格。

你们有什么建议做这样的事情?当单元格出现时,我应该自动触发请求吗?或者我应该等待别的事情呢?任何输入将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

就个人而言,我会在单元格出现后立即发出请求。事实上,我会考虑在单元出现之前触发请求 - 在15左右的单元格附近?这样,用户在显示加载单元格时等待的时间更短。

然而,这一切都取决于你的数据集有多大 - 如果要获得接下来的20行的大量数据,我会把“按此处以获得更多结果”等等,并等待用户的输入触发请求。

找出哪种方式可以提供最佳用户体验的最佳方法是进行快速用户测试 - 请可能是您的客户的人测试应用并查看他们最满意的用户。看看像你这样的应用程序 - 他们做了什么 - 如果他们为您的客户树立先例,也许您应该尝试遵循它?

答案 1 :(得分:2)

您可以使用以下测试代码;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    totalElements = pageNumber*kNumberofElementsPerPage;
    int noOfrows = totalElements>[customerArray count]?[customerArray count]:totalElements+1;
    return noOfrows;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.row == totalElements&&totalElements!=0){
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"loadMoreCell"];
        if(cell == nil){
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"loadMoreCell"];
        }
        cell.textLabel.text = @"Load More records";
        cell.detailTextLabel.text = [NSString stringWithFormat:@"Showing %d of %d records",totalElements,[customerArray count]];
        return cell;
    }
    ......
    ......
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == totalElements){
        pageNumber++;
        [customerTableView reloadData];
        return;
    }
    ......
    ......
}

我希望它会对你有所帮助。