在我的UITableView
中,当用户滚动到底部时,如果有更多内容可用,我会使用scrollViewDidScroll:
加载更多单元格。
我使用NSRange
来确定表中显示了plist中的哪些信息以及已加载了多少个单元格。
因此,如果用户点击plist中的索引12,则表格将显示包含该信息的单元格。 NSRange:{12,1} - >索引12,1行
现在用户滚动到底部,加载并显示新单元格。 NSRange:{12,2} - 索引12,2行等
我的问题是更新表的函数被多次调用。因此,当表格应该只加载一个以下的单元格时,会更新多次,这会导致行数增加到大于1。
有没有办法避免在我的代码中多次调用函数?
- (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));
}
非常感谢!