对于新用户,我有几个入职屏幕(所有屏幕都在同一OnboardViewController
中)。如果用户成功注册,则将应用程序的根控制器从OnboardViewController
更改为PreLoadViewController
:
let mcVC = PreLoadController()
appDelegateTemp.window?.rootViewController = mcVC
我正在使用此控制器来显示内容加载的进度。加载内容后,我将再次更改根控制器:
if let appDelegateTemp = UIApplication.shared.delegate as? AppDelegate {
let mcVC = MainViewController()
let navy = UINavigationController(rootViewController: mcVC)
appDelegateTemp.window?.rootViewController = navy
}
它可以工作,但是我有一个非常奇怪的错误。当我尝试从应用程序更改设置(例如mic settings
或notifications settings
)时,我必须转到iPhone设置:
if let settingsUrl = URL(string: UIApplication.openSettingsURLString) {
UIApplication.shared.open(settingsUrl)
}
但是当我回来时,我再次看到OnboardViewController
,好像appDelegate不记得当前的根控制器是mcVC
(或者UINavigationController
嵌入了{ {1}}。
那么,为什么呢?解决此问题的正确方法是什么?