我有一个分组的UI tableview,它有很多部分。表格单元格是从json数据响应加载的。但是,由于部分和分组单元格中的行数,我想减少当前加载数据所需的sql查询次数,这需要8-12秒,相反,我想实现类似于无限滚动技术的东西用于Web应用程序,但在我的情况下,我将有表格与表格部分标题除外的emtpy内容,当该部分进入视图的中间点时,我想在该部分中显示一个加载程序,然后动态加载数据进入表中。也可能有多个异步请求,因为用户可能会滚过一个部分,然后调用该方法加载下一部分。
我对ios和objective-c非常陌生,发现很难在苹果文档中找到它,在SO或google中找到类似的功能。
提前致谢
答案 0 :(得分:0)
我认为你所谈论的情况是技术术语中的分页。
并且对于分页你可以找到很多解决方案。 这是其中一个可以实现的解决方案
@property (nonatomic, assign) BOOL isLoading;
/ ** *如果可以加载更多数据,请设置此标志。 * /
@property (assign, nonatomic) BOOL hasNextPage;
/ ** *从服务器加载的当前页面。用于分页。 * /
@property (assign, nonatomic) int currentPage;
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
// Check scrolled percentage
//
CGFloat yOffset = tableView.contentOffset.y;
CGFloat height = tableView.contentSize.height - tableView.frame.size.height;
CGFloat scrolledPercentage = yOffset / height;
// Check if all the conditions are met to allow loading the next page
//
if (scrolledPercentage > .6f && !self.isLoading && self.hasNextPage)
[self loadNextPage:++self.currentPage];}
- (void)loadNextPage:(int)pageNumber
{
if (self.isLoading) return;
self.isLoading = YES;
// Fetch your data here
// ..
// Once the request is finished, call this
self.isLoading = NO;
}