如何使用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后滚动到内容高度
答案 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来调用您的网络服务。
希望你得到逻辑:)