回到rootViewController,viewDidAppear被调用beforeviewDidLoad



当应用程序从后台移动到前台时,我需要返回到我的rootViewController。所以在applicationWillEnterForeground中,我写了这段代码:

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

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

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

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

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

if let root =  window?.rootViewController {
root.navigationController?.popToRootViewController(animated: true)
}

相关内容

  • 没有找到相关文章

最新更新