gpt4 book ai didi

objective-c - iOS 中的 ViewDidLoad 和 UINavigationController?

转载 作者:行者123 更新时间:2023-11-29 04:35:21 27 4
gpt4 key购买 nike

我有一个基于 UINavigationController 的应用程序。有一个菜单屏幕,其中的按钮可以连接(推到导航 Controller 堆栈上)到其他 9 个“子屏幕”之一。这些子屏幕都不会与任何其他屏幕连续。当用户完成在“子屏幕”上输入数据时,他们可以按下完成按钮,该按钮将弹回原始菜单屏幕。 (如果您很难想象这一点,请想象一棵像 Storyboard一样的树,其中有一个根 ViewController,然后是 9 个叶 ViewController)。

好的,通过这个设置,我有一些关于 viewDidLoad 工作原理的问题。

~ 首先,每次我们转换到子屏幕时都应该调用 viewDidLoad 。例如,假设我从菜单屏幕转到子屏幕“B”,返回菜单屏幕,然后返回子屏幕“B”。 B 的 viewDidLoad 方法应该被调用两次吗?如果不是,为什么我的会被调用两次?

~ 其次,假设每次都会被调用,如果我有很多长操作需要每个子屏幕执行一次,我该怎么办?我应该把它们放在哪里(如果我把它们放在 viewDidLoad 中,如果用户不断在此页面和菜单之间来回移动,它会发生多次)?

最佳答案

回答您的问题:

  1. 是的,一般来说,每次将 B 的 viewDidLoad 方法推送到 UINavigationController 的堆栈时都应该调用它。这是因为每次 B 从堆栈中弹出时,它通常都会被释放,并且每次访问 B 时都会创建 B 的新实例。

  2. 处理这种情况的方法有很多种。如果不确切地了解您正在尝试做什么,就很难判断什么是适合您的。一种方法是创建 singleton object负责处理。这可能比在 UIViewController 中处理它更好的原因是单例可以在应用程序的整个生命周期中生存,而 UIViewController 通常具有相对较短的生命周期。单例对象只需创建一次,它们就可以管理您在应用程序的生命周期中需要保留的任何操作和数据。

关于objective-c - iOS 中的 ViewDidLoad 和 UINavigationController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125445/

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