我的IOS应用在同一情节提要中有2个导航控制器。
EntryPoint -> FirstNavigationController -> AViewController -> BViewController -> CViewController -> ......
如果BViewController
中满足某些条件,我会选择另一个导航控制器,而不是继续进行CViewController
。
BViewController -> NewNavigationController -> DViewController -> EViewController
我的问题是,如果我的应用返回到前台时切换到DViewController
中的另一个应用,它首先显示DViewController
,然后立即切换到BViewController
仅当我沿着新的导航控制器路径行驶时才会发生。如果我在CViewController
中切换应用,当我返回时,它会按原样停留在CViewController
中。
在appDelegate的applicationWillEnterForeground(_ application: UIApplication)
中,
self.window?.rootViewController?.restorationIdentifier
打印FirstNavigationController
的restoreIdentifier,因此由于某种原因,当我切换到另一个导航控制器时,我的rootViewController不会改变。应该是?我想念什么吗?
viewDidLoad(),viewWillAppear()和viewWillDisappear()。他们几乎是空的。
override func viewDidLoad() {
super.viewDidLoad()
self.usernameTextField.delegate = self
enableContinueButton()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//add notifications for keyboard
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
//remove notifications for keyboard
}
谢谢