ios - 在 iOS 中显示多列表格的最有效方法是什么?

标签 ios iphone objective-c uitableview

我的问题是加载速度慢,滚动速度很快。

我必须显示一个包含 10 列的表格:

+-----+-----+-----+-----+-----+-----+-----+- -----+------+------+ |位置 |名称 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8 | Col9 | Col10 | +-----+-----+-----+-----+-----+-----+-----+- -----+------+------+ | 1 |富 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 2 |酒吧 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 3 |巴兹 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +-----+-----+-----+-----+-----+-----+-----+- -----+------+------+

忽略表头(我没有显示它)我正在使用带有子类 UITableViewCellUITableView 来表示数据。

我的自定义 UITableViewCell 有 10 个 UILabel subview ,都添加到它的 contentView 中。每列一个。

我只是在 UITableViewcellForRowAtIndexPath 方法中为每个 UILabel subview 设置文本值。

任何时候屏幕上大约有 14 行。滚动速度超快。我的 reuseIdentifier 运行良好。

但是,表的初始加载速度明显较慢。比我使用 UITableView 的其他屏幕慢很多,但这些屏幕的列少得多。

我的单元格都设置为不透明(我知道这是默认设置)。

有什么技巧是我想念的吗?有太多的意见?我应该采取另一种方法吗?或者我做得很好,我应该在我的代码中寻找另一个影响加载时间的问题吗?

更新:

我已经运行了 instruments,大部分时间(500 毫秒 74.5%)是:

CA::Layer::layout_and_display_if_needed(CA::Transaction*)

更新:

一些人认为我的数据是瓶颈。

我正在使用 NSFetchedResultsController

没有计算。每行的数据直接从相应的实体加载,数据按原样显示。我不是遍历对象图以从任何其他关系或类似的东西中获取数据。

启用 CoreData SQLDebug 后,我可以看到 20 行的总提取执行时间为 0.0014 秒。我的批量大小设置为 20(略大于屏幕上可见的大小)以帮助滚动。

滚动速度超快,所以我认为这里的数据不是问题。

最佳答案

UITableView 通常用于显示单列数据。 您可以使用 UICollectionView对于这样的事情。

或者,如果您想以困难的方式进行操作,您可以基于 scrollview 实现自己的表格 View 。

但是关于加载缓慢——你是从一些网络服务加载数据还是只是简单的演示,所有数据都具有相同的值?(如果不是——试试这种方式来理解问题)

关于ios - 在 iOS 中显示多列表格的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22142238/

相关文章:

iphone - 用于剥离 HTML 标记的 NSRegularExpression

objective-c - 在 iOS 程序中比较 char 数组和字符串

ios - objective-c : How to create different shades of a color

ios - 如何在 iOS 8 中打开 UIDatePicker 时隐藏键盘

ios - Xcode iOS : check if user is logged in and show different views if not

ios - facebook - 获取点击 FB 共享链接的用户上下文

ios - POST 请求响应后启动 segue

iphone - 如何获取 UIWebView 用户代理

iphone - UICollectionView 重复单元格

iphone - ZUUIRevealController 泄漏内存?