【发布时间】:2015-12-02 07:44:21
【问题描述】:
我正在使用 Swift 2.0 开发 iOS 应用程序,但无法快速加载 UITableView,现在加载大约需要 1-2 秒。
我有什么。
我有一个带有自定义单元格的 UITableView。每个自定义单元格都有用于水平滚动的 UIScrollView 和 PageControl。
在 UIScrollView 的每个页面上还需要添加一个单独的 xib。此 xib 包含带有两个 UIViewPicker 的视图。
工作原理
在“tablewView: cellForRowAtIndexPath”中,我正在调用一个函数,该函数使用 xib 文件实例化子视图并用数据填充它。然后将其添加到 scrollView 并配置分页。
什么是慢
如果我将 10-20 页添加到 3 个单元格,它已经非常慢(1-3 秒)。
我已经尝试移动逻辑,将数据填充到后台线程中的子视图中,然后稍后在主线程中将这些子视图添加到单元格中。它使整个 tableView 快速显示,但您需要等待多长时间才能看到每个单元格内的实际数据仍然很愚蠢。
我查看了 Instruments,在我看来,我所有的数据计算都非常快,但是使用 uipickers 添加这些子视图是最慢的部分。
我还尝试仅添加第一个 subView,然后在用户开始在单元格上水平滚动时添加所有其余部分。速度快了 10 倍,但延迟仍然很明显,而且逻辑要复杂得多(在滚动拖动时添加新的子视图并不是很简单)。
关于我应该在哪里寻找以及如何使整个概念快速发挥作用有什么更好的建议吗?我相信它可以很快,只需要改进逻辑。
【问题讨论】:
-
你能发布一些代码吗?比如
cellForRowAtIndexPath,... -
当然。以下是所有相关函数:gist.github.com/anonymous/81986debb1f6d5fd1c79
标签: ios objective-c xcode uitableview uiscrollview