ste*_*osn 9 objective-c uitableview
我承认UITableview在用户滚动时动态加载单元格.我想知道是否有一种方法可以预加载所有单元格,以便在滚动时不加载每个单元格.我需要预加载10个细胞.这可能吗?
Mar*_*n R 11
您可以初始化表视图单元格,将它们放入数组中,precomputedCells并在数据源委托方法tableView:cellForRowAtIndexPath:中从数组中返回预先计算的单元格而不是调用dequeueReusableCellWithIdentifier:.(类似于在静态表视图中执行的操作.)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [self.precomputedCells objectAtIndex:indexPath.row];
}
Run Code Online (Sandbox Code Playgroud)
查看WWDC 2012 Session 211"在iOS上构建并发用户界面"可能也很有用,其中显示了如何在保持用户界面响应的同时填充后台线程中的表视图单元格的内容.
Mar*_*ark 10
我正在寻找原始问题的解决方案,我想我会分享我的解决方案.
在我的情况下,我只需要预加载下一个单元格(我不会理解为什么,但有一个很好的理由).
似乎UITableView呈现的内容与适合分配给它的UITableView框架一样多.
因此,我通过1个额外单元格的高度来超大UITableView框架,将超大区域推到屏幕外(或者如果需要,它可以进入剪切的UIView).当然,现在这意味着当我滚动表格视图时,最后一个单元格将不可见(因为UITableView框架比它的超级视图更大).因此,我在tableFooterView中添加了一个额外的UIView来表示单元格的高度.这意味着当表格滚动到底部时,最后一个单元格很好地位于其超级视图的底部,而添加的tableFooterView仍然在屏幕外.
这当然可以应用于任何数量的细胞.如果需要,甚至可以通过将UITableView框架过大到iOS最初计算的contentSize来应用它来预加载所有单元格,然后添加相同大小的tableFooterView.
希望这能帮助其他人解决同样的问题.
| 归档时间: |
|
| 查看次数: |
7955 次 |
| 最近记录: |