ios - UITableView 滚动时动态加载内容

标签 ios cocoa-touch uitableview

我正在尝试实现一个无限的 UITableView。我以 block 的形式从服务器加载一些信息,我想在用户滚动表格时将这些信息动态添加到表格 View 。

我面临的问题:我有一个包含 40 个元素的初始表格 View ,然后在 scrollViewDidScroll 我检查最后一个可见行的 indexPath == [myData count] - 20 (所以当用户已经滚动列表的一半时我加载下一个内容)我加载下一个来自服务器的 40 个内容元素,只有当 last visible row's indexPath == [myData count] -1 时,我才真正重新加载 tableview。因此,正如您所见,我进行了一些急切的缓存,以便更快地重新加载 tableview。一切正常,但是当我开始滚动我的表时,真正快速的数据停止加载。似乎这个检查:last visible row's indexPath == [myData count] - 20 由于快速滚动实际上没有机会实现。我看不出任何其他明显的原因。那么有人对这个奇怪的问题有一些答案吗?

附言或者我应该尝试 reloadRowsAtIndexPaths 而不是重新加载整个表?

最佳答案

也许有了这个代表,您就有机会提前做一些事情。也可以只重新加载可见行,这比重新加载数据要好。

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSArray *paths = [self.tableView indexPathsForVisibleRows];
    int tmprow = [[paths objectAtIndex:0] row];
}

关于ios - UITableView 滚动时动态加载内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769848/

相关文章:

ios - 数组数据在 swift 4 的 TableView 中重复

ios - swift 中的简单完成处理程序或回调

iphone - 如何使用 UIImagePickerControllerCropRect

string - NSString 中某个字符出现的次数

iphone - 有没有办法为iPad和iPhone设置不同的CFBundleDisplayName?

ios - didSelectRowAt 仅在多点触控时调用

ios - 如何重新加载 tableview 的特定部分

通往 Twitter 的 iOS 标签栏项目

ios - 取消后 NSOperation 保留在 NSOperationQueue 中

iphone - 尝试支持 3.5 和 4 英寸屏幕的 iPhone 时出现问题