gpt4 book ai didi

ios - 如何在使用 swift 切换到它之前实例化和加载 View Controller

转载 作者:可可西里 更新时间:2023-11-01 00:43:25 25 4
gpt4 key购买 nike

当我从 viewController A 转到 viewController B 时遇到问题,在转到它之前大约有 5 秒的延迟。我相信这是由于我在 viewDidLoad 中加载的 View 数量所致。

我有一个 xib 文件,其中包含 11 个代表级别的部分的堆栈 View 。每个部分都有一个按钮和一些图像,可以根据用户的进度进行更改。

此外,我实例化了 10 个这些 xib View 以加载到 ScrollView 中。这一切都发生在 viewDidLoad 中。


我想知道我是否可以加载 viewController B 并在实际单击 segue 的按钮之前准备好一切;希望修复我得到的延迟。我还使用自定义 segues 进出 Controller 。

感谢我能得到的任何帮助。我自己研究过这个问题,但我发现的大多数主题都已过时或不适用。再次感谢您的指点。

更新:关于如何为提高效率准备 View Controller ,答案确实回答了我的部分问题,它没有回答延迟部分,但如果您阅读下面的评论,我想我已经明白了答案...

最佳答案

您可以将所有繁重的代码从 viewDidLoad() 移到一些自定义方法中

func prepare() {
// Something hard
}

你可以随时准备你的 Controller 并存储它

var heavyController: HeavyViewController?

override func viewDidLoad() {
super.viewDidLoad()
heavyController = HeavyViewController()
heavyController?.prepare()
}

不仅仅是在 segue 中使用 heavyController 而不是创建新的。希望这会有所帮助。

附言考虑将大量代码移至后台线程,您可以查看 example .

更新:要使用 segue 显示您准备好的 Controller ,请执行以下操作:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "HeavyController" {
present(heavyController, animated: true, completion: nil)
}
}

关于ios - 如何在使用 swift 切换到它之前实例化和加载 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com