Dis*_*ath 4 load delay ios segue swift
当我从 viewController A 转到 viewController B 时,我遇到了一个问题,在转到它之前它有大约 5 秒的延迟。我相信这是由于我在 viewDidLoad 中加载的视图数量。
我有一个包含 11 个代表级别的部分的堆栈视图的 xib 文件。每个部分都有一个按钮和一些可以根据用户进度更改的图像。
此外,我实例化了其中 10 个 xib 视图以在滚动视图中加载。这一切都发生在 viewDidLoad 中。
我想知道我是否可以加载 viewController B 并在实际单击它的按钮之前准备好一切;希望修复我得到的延迟。我还在控制器之间使用自定义转场。
我能得到的任何帮助表示赞赏。我自己研究过这个问题,但我发现的大多数主题都过时了,或者不适用。再次感谢您的指点。
更新:就如何为效率目的准备视图控制器而言,答案确实回答了我的问题的一部分,它没有回答延迟部分,但我想如果您阅读答案下面的评论,我想我明白了...
您可以将所有繁重的代码viewDidLoad()移到某个自定义方法中
func prepare() {
// Something hard
}
Run Code Online (Sandbox Code Playgroud)
比您可以随时准备您的控制器并存储它
var heavyController: HeavyViewController?
override func viewDidLoad() {
super.viewDidLoad()
heavyController = HeavyViewController()
heavyController?.prepare()
}
Run Code Online (Sandbox Code Playgroud)
不仅仅是在segue中使用heavyController而不是创建新的。希望这可以帮助。
PS考虑将大部分代码移到后台线程中,您可以查看示例。
更新: 要使用 segue 显示您准备好的控制器,请执行以下操作:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "HeavyController" {
present(heavyController, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5387 次 |
| 最近记录: |