如何使用call api ios在uitableview中进行分页?

时间:2017-01-09 08:51:22

标签: ios iphone

如何使用call api在UITableView中进行分页(加载更多像facebook这样的数据)? 代码: -

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat height = scrollView.frame.size.height;

    CGFloat contentYoffset = scrollView.contentOffset.y;

    CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;

    if(distanceFromBottom < height)
    {

        [self fetchNewsFeeds:[filteredArray count]+1 withLimit:20];

        NSLog(@"end of the table");
    }
}

在不调用api后滚动到内容高度

4 个答案:

答案 0 :(得分:0)

将响应数据存储在NSArray中,然后添加到NSMutableArray

NSArray *resObj = [NSArray alloc] init];
NSMutableArray *aMutArray = [NSMutableArray alloc] init];
[aMutArray addObject: resObj];

//检查tableview的最后一个索引  在cellForItemAtIndexPath

中编写此代码
 if(lastIndex)
    {
         // show load more button
    }

答案 1 :(得分:0)

取两个部分:第一部分中的行包含您要显示的项目,第二部分包含一个单元格具有UIActivityIndicator的行。

然后实现给定的委托方法:

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {

    if indexPath.section ==  1 {

        let footercell = cell as! ProductFooterCollectionViewCell
        footercell.loader.startAnimating()
        fetchSearchProducts()
     }             
}

答案 2 :(得分:0)

Tableview在显示此方法调用的单元格时委派:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger totalRow = [tableView numberOfRowsInSection:indexPath.section];//first get total rows in that section by current indexPath.
    if(indexPath.row == totalRow-1)
    {
        // Code...
    }
}

希望你的问题解决。

答案 3 :(得分:0)

您需要先找到 tableviewcell 的最后一行。

以下是查找最后一行的代码:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSInteger totalNumberOfRows = [tableView numberOfRowsInSection:indexPath.section];

// isLoadMore flage is TRUE when there is more data available.
        if(indexPath.row == totalNumberOfRows-1 && isLoadMore)
        {
            // Code...
            // Here you need to check if there are some load more data is there from pervious web-service or not.
    // If there is load more then call web-service and another set of data.
        }
    }

您可以使用AFNetworking来调用您的网络服务。

希望你得到逻辑:)