我正在开发一个简单的 iPhone 应用程序,该应用程序正在从 UITableView 内的 Web 服务(RSS 提要)加载数据。第一次加载应用程序时,我使用初始值为 1 的计数器来加载提要的第一页:
- (void)viewDidLoad
{
[super viewDidLoad];
counter = 1;
[self fetchEntriesNew:counter];
}
当用户向下滚动到 tableview 的底部时,我正在使用以下方法通过递增计数器来获取 rss 提要的下一页来在 tableview 中加载更多数据:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height;
if (endScrolling >= scrollView.contentSize.height)
{
NSLog(@"Scroll End Called");
counter++;
[self fetchEntries:counter];
}
}
每次用户向下滚动到 tableview 的底部时,计数器都会增加,因此调用 rss 提要的下一页。至此,一切正常。
但是,如果用户在到达底部后向上滚动多次,计数器也会多次增加,因此到达 rss 提要的不同页面并将其添加到 tableview 的底部。
更准确地说,如果用户已经到达底部并向上滚动 3 次,而不是加载第二页,它将加载第四页(滚动 3 次加上开始时已经添加了 1)
如果没有加载之前的页面条目,我如何限制不添加另一个页面条目?
请不要建议在 tableview 或任何第三方库(如 NMPaginator 和 PartialTable 等)底部处理更多行的替代策略。提前致谢!
更新:
我通过一次又一次地运行它来密切观察该应用程序。似乎如果用户在 tableview 完成加载已经请求的页面数据(包括图像)之前滚动到底部(增加计数器),它将忽略加载当前正在加载的页面并开始加载下一个基于递增的计数器。