当用户像这样滚动到底部时,我正在向 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调用而不停止。
答案 0 :(得分:0)
尝试这个解决方案,它总是适合我。
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
let lastElement = dataSource.count - 1
if indexPath.row == lastElement {
// logic here
}
}
如果您仍有疑问,请询问。