iPhone 加载更多 tableViewCell
Posted
技术标签:
【中文标题】iPhone 加载更多 tableViewCell【英文标题】:iPhone load more tableViewCell 【发布时间】:2010-11-03 17:10:48 【问题描述】:所以我有一个设计问题要问你。基本上我有一个应用程序,当应用程序加载时,我从服务器获取 20 个项目,并将它们显示在表格视图中。我还有一个加载表格单元格,它出现在最后一个单元格中。我想要做的是当该单元格出现时,加载接下来的 20 个项目并将它们添加到列表中并重新加载表格。
你们对做这样的事情有什么建议?当单元格出现时,我应该自动触发请求吗?还是我应该等待其他事情来做到这一点?任何输入将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:就个人而言,我会在单元格出现后立即发出请求。事实上,我会考虑在单元格出现之前触发请求 - 在单元格 15 左右?这样,用户等待显示加载单元的时间就会减少。
但是,这完全取决于您的数据集有多大 - 如果要获取接下来的 20 行数据有很多,我会输入类似“按此处获取更多结果”之类的内容,然后等待用户输入触发请求。
找出哪个提供最佳用户体验的最佳方法是进行快速用户测试 - 让可能是您的客户的人测试应用,看看他们对哪个应用最满意。看看像您这样的应用程序 - 它们是做什么用的 - 如果它们为您的客户树立了先例,也许您应该尝试效仿?
【讨论】:
我认为这就是我最终要做的事情。这样看起来会非常无缝。不过问题是,如何让表格保存它的滚动位置,以便在重新加载时不会回到顶部? 我认为它不会在重新加载时滚动到顶部? 确实如此,但我想出了如何保存索引并在没有动画的情况下滚动到该位置。感谢您的帮助,这有效! :)【参考方案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;
......
......
希望对你有帮助。
【讨论】:
感谢您的回复,但我认为我将在用户滚动时动态加载它,因此他们不需要按任何内容。 :) 例如:首先它将在表格视图中列出 10 行。最后一行是“加载更多记录”,如果单击它,它将列出另外 10 行。它会动态地发生 嗯,是的,我让它工作了,所以如果用户进入底部的 5 行内,它就会触发。这可能也会起作用...... @gabaum10:目前我的 XMLParser 正在解析 100 个条目。我想和你做的一样:到达最后一行后自动加载更多条目。你能帮我一些代码吗?提前谢谢你。以上是关于iPhone 加载更多 tableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone SDK 中使 tableviewcell 文本在触摸时可编辑?
当用户滚动到最后一个 tableViewCell 时执行操作
如何将两个(或更多)tableViewCells 添加在一起以形成“总数”
如何仅在 swift 中重新加载 tableViewCell?
从 Storyboard 加载 tableViewCell 而不使用 dequeueReusableCellWithIdentifier