我正在使用“viewWillAppear”检查UserDefaults.standard,如果我有关于默认数据的数据,我想重定向到Dashboard View并退出登录。
当我正确登录时,应用程序正常重定向,但在有数据的情况下不在viewWillAppear中。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let defaults = UserDefaults.standard
if defaults.string(forKey: "username") != nil {
print("Exist")
print(defaults.string(forKey: "username")!)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "Dashboard")
self.present(vc, animated: true, completion: nil)
}
}
我得到这个错误调试。
2016-11-04 17:44:32.130024 RHiOS[1155:278240] Warning: Attempt to present <RHiOS.MenuViewController: 0x100f0d480> on <RHiOS.ViewController: 0x100e0b880> whose view is not in the window hierarchy!
如果有数据,我如何重定向到Dash?感谢。
答案 0 :(得分:1)
您无法在viewWillAppear
中展示ViewController。只需将此代码放在viewDidAppear
中,它就可以解决您的问题。
当视图不可见时,它不会像提到的错误一样在窗口层次结构中。您还可以在故事板中创建一个segue,然后拨打performSegue(withIdentifier:sender:)
。
答案 1 :(得分:0)
当视图尚未显示时,您无法呈现任何内容,因此您必须将代码移至 viewDidAppear 或阻止此视图显示在首先从父视图控制器直接重定向到仪表板,该控制器根据您是否有数据显示仪表板或登录屏幕。