当用户滚动到tableview框架的底部时,加载更多单元格

时间:2017-01-25 11:18:28

标签: ios objective-c uitableview

当用户像这样滚动到底部时,我正在向 Date fromDate = dates.get(0); Date toDate = (Date) dates.get(dates.size() - 1); return new testSomething(true, "msg here", fromDate, toDate); 添加新数据....

tableView

现在,如果表视图中的数据足够大,用户将滚动到底部并按预期从api完成数据提取。但是,当我过滤此表并假设我只获得一行数据时。 在这种情况下,即使我只能看到表中存在一个单元格,如果我尝试滚动表格,则会触发api请求。 如何实际知道用户是否已滚动超出其- (void)scrollViewDidScroll:(UIScrollView *)aScrollView { float height = self.itemListTableView.frame.size.height; float contentYoffset = aScrollView.contentOffset.y; float distanceFromBottom = aScrollView.contentSize.height - contentYoffset; if (distanceFromBottom < height) { NSLog(@" you reached end of the table"); isTableScrolledToBottom = YES; }else{ isTableScrolledToBottom = NO; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"CellIdentifier"; ListViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell==nil){ cell = [[ListViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } //Assign values to labels here.. if (isTableScrolledToBottom) { if (indexPath.row == [apiMutableArray count]-1) { // Call the API NSLog(@"Call the api"); int pgn = [self.currentPageNumber intValue]; pgn = pgn+1; self.currentPageNumber = [NSNumber numberWithInt:pgn]; NSLog(@"incremented page number : %@",self.currentPageNumber); NSMutableDictionary *mutableDict = [self.poPostDict mutableCopy]; [mutableDict setObject:self.currentPageNumber forKey:@"pageno"]; self.poPostDict = [mutableDict mutableCopy]; [self addLoaderViewAtBottom]; [self loadPOData:self.poPostDict]; } } return cell; } 和最高frame结尾,以便仅在这种情况下我可以获取数据。

注意: - 如果只有一行存在并且我尝试滚动,则使用当前技术,连续点击api调用而不停止。

1 个答案:

答案 0 :(得分:0)

尝试这个解决方案,它总是适合我。

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        let lastElement = dataSource.count - 1
        if indexPath.row == lastElement {
            // logic here
            }    
    }

如果您仍有疑问,请询问。