Ios UITableView scrollViewDidScroll:停止函数被多次调用
在我的UITableView中,我使用scrollViewDidScroll:在用户滚动到底部时,如果有更多内容可用,则加载更多单元格 我使用NSRange确定表中显示了plist中的哪些信息以及已加载的单元格数量 因此,如果用户单击plist中的索引12,该表将显示一个包含该信息的单元格。NSRange:{12,1}->索引12,1行 现在用户滚动到底部,一个新的单元格被加载并显示。NSRange:{12,2}-索引12,2行,等等 我的问题是更新表的函数被多次调用。因此,当表应该只加载范围下的一个单元格时,该范围会被更新多次,从而导致行数增长大于1 有没有办法避免函数在我的代码中被多次调用Ios UITableView scrollViewDidScroll:停止函数被多次调用,ios,objective-c,uitableview,uiscrollview,Ios,Objective C,Uitableview,Uiscrollview,在我的UITableView中,我使用scrollViewDidScroll:在用户滚动到底部时,如果有更多内容可用,则加载更多单元格 我使用NSRange确定表中显示了plist中的哪些信息以及已加载的单元格数量 因此,如果用户单击plist中的索引12,该表将显示一个包含该信息的单元格。NSRange:{12,1}->索引12,1行 现在用户滚动到底部,一个新的单元格被加载并显示。NSRange:{12,2}-索引12,2行,等等 我的问题是更新表的函数被多次调用。因此,当表应该只加载范围下
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat currentOffset = scrollView.contentOffset.y;
CGFloat maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;
CGFloat loadDelta = - 75
if (maximumOffset - currentOffset <= loadDelta &&
_commentsRange.length != [[Content manager] numberOfComments] &&
scrollView.isDragging) // load new cell below
{
// this gets called multiple times:
[_largeContentTableView beginUpdates];
[self addBottomRange];
[_largeContentTableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:(_commentsRange.length - 1) inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
[_largeContentTableView endUpdates];
return;
}
...
}
- (void)addBottomRange
{
_commentsRange = NSMakeRange(_commentsRange.location, (_commentsRange.length + 1));
}
非常感谢 问题与scrollViewDidScroll有关,顾名思义,scrollViewDidScroll在每次滚动时都会触发。再加上插入新行的条件取决于某个偏移值,您基本上会进入一种状态,在这种状态下,您可以并确实多次开火。当您到达底部时,还有其他方法可以检测,例如: