返回rootViewController,在viewDidLoad之前调用viewDidAppear

问题描述 投票:1回答:2

当应用程序从后台移动到前景时,我需要返回到rootViewController。因此,在applicationWillEnterForeground中,我编写了以下代码:

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let mainController = storyboard.instantiateViewController(withIdentifier: "MqttLoginController")
        window?.rootViewController = mainController

但是我不明白为什么在我的rootViewController中首先调用viewDidAppear,然后再调用viewDidLoad,最后再次调用viewDidAppear。为什么会这样呢?

更新:为澄清起见,我没有写过我在应用程序的初始屏幕中不使用导航控制器的信息,我需要回到我的initialViewController。因此,它并不是所有屏幕的rootViewController。

ios swift uiviewcontroller rootviewcontroller
2个回答
1
投票

ViewController已经作为根存在。因此,当您的应用程序出现在前台时,它会触发viewDidAppear,然后您将创建一个新的ViewController实例,这将触发viewDidLoad,并在其再次出现viewDidAppear时出现。


0
投票

代替创建新实例,请尝试使用此代码

 if let root =  window?.rootViewController {
        root.navigationController?.popToRootViewController(animated: true)
     }
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.