gpt4 book ai didi

iOS 恢复 - 为什么在我正在恢复的 View 之前显示另一个 View ?

转载 作者:行者123 更新时间:2023-11-29 10:45:37 26 4
gpt4 key购买 nike

我的 Storyboard有:NavigationController -> UIViewController 1 -> UIViewController 2 -> UIViewController 3 -> UITabBarController -> 四个 UIViewControllers (a,b,c,d)

我正在为应用程序添加恢复支持。我已将它添加到 UIViewController #1 和 #3,现在将它添加到 UITabBarController 下的 UIViewController 'c'。

当我在显示 UIViewController 'c' 时使用 Xcode 终止我的应用程序,然后再次启动应用程序时,viewcontroller 的方法被正确调用并且其 UITextFields 的内容被正确恢复。

但是在“c” View Controller 中放置断点时,我可以看到暂时显示了 UIViewController 3。它调用了 viewDidLoad 和 viewWillAppear: 方法。

显示 UIViewController #3 的典型原因是什么?

我一直在为我的 UIViewControllers 实现恢复,从最终用户的角度来看似乎没有任何负面影响 - 没有断点,显示没有机会更新以显示中间查看。

最佳答案

这就是 View Controller 恢复。该应用程序从头开始;为了到达在终止时显示的 View Controller ,应用程序将 View Controller 创建序列沿着从 Root View Controller 到要显示给用户的 View Controller 的链向下走。它不可能以任何其他方式发生。 (毕竟,如果 VC2 的“后退”按钮指向 VC1,则 VC2 在导航 Controller 堆栈中必须位于 VC1 之上。)并且您不希望它发生,因为您可能有重要的重建序列时要做的工作。通过在恢复过程中设置断点,您揭示了“幕后黑手”。但用户看不到该过程(它被启动图像覆盖),所以没有问题。

特别重要的是,viewDidLoad 在创建链中以正确的顺序调用,并且在发送 decodeRestorableStateWithCoder: 之前,所有 View Controller 都会发生这种情况>,也是按照链条的顺序。

(但是,您不应该指望任何与 viewWillAppear: 及其表兄弟有关的事情。这些可能会被调用,也可能不会被调用,而且您不能确定何时。我认为这种不一致/关于 viewWillAppear: 时间的不可预测性是一个错误,但不幸的是,Apple 没有。)

关于iOS 恢复 - 为什么在我正在恢复的 View 之前显示另一个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22505324/

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