如何知道用户滚动表格后是否可以看到uitableview部分

时间:2015-08-26 03:52:49

标签: ios objective-c uitableview

我有一个分组的UI tableview,它有很多部分。表格单元格是从json数据响应加载的。但是,由于部分和分组单元格中的行数,我想减少当前加载数据所需的sql查询次数,这需要8-12秒,相反,我想实现类似于无限滚动技术的东西用于Web应用程序,但在我的情况下,我将有表格与表格部分标题除外的emtpy内容,当该部分进入视图的中间点时,我想在该部分中显示一个加载程序,然后动态加载数据进入表中。也可能有多个异步请求,因为用户可能会滚过一个部分,然后调用该方法加载下一部分。

我对ios和objective-c非常陌生,发现很难在苹果文档中找到它,在SO或google中找到类似的功能。

提前致谢

1 个答案:

答案 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;

 }