我有UITableView,我从JSON查询中填写。
我用私信填写它并且有效。
JSON查询具有“站点”属性,我可以在每个站点获得20个PM。 所以在开始时我得到了Site = 0并得到了20PMS,这些都是加载的。
现在我想拥有电子邮件应用程序中的功能(我相信我在那里看到了它):当你向下滚动并到达终点时(在我的应用程序到达下午20点),应用程序应该加载下一个20等等。
任何想法如何实现?
答案 0 :(得分:0)
尝试
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return ([array count] + 1);
}
在
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
待办事项
if([indexpath row] == [array count]) {
[self loadPMForSite:([array count]/20-1)];
}
在
- (void)loadPMForSite:(int)siteNumber
加载新pms,然后重新加载tableview数据。
未经测试但应该起作用。可能包括拼写错误。
答案 1 :(得分:0)
Sideswipe的答案是一个良好的开端,但是当你获得接下来的20个项目时,你不想冻结UI。在最后一行的情况下,您应该在启动线程以实际获取数据时返回带有“正在加载...”的单元格和UIActivityIndicator。当该线程完成时,它会向主线程发出信号,然后主线程可以重新加载数据。另外,在实际输入数据之前,请注意不要更改数组的大小(在后台线程中),因为如果[数组计数]太大,用户可能会遇到滚动超出最后一行的问题。
请参阅apple的示例:LazyTableImages
对于UIActivityIndicator:
UIActivityIndicatorView * loading = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(200, 20, 30, 30)];
[date setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.view addsubview:loading];
[loading startAnimating];