我正在尝试通过此代码加载视图:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
//let vc = self
let vc = storyboard.instantiateViewController(withIdentifier: "loginView") as! RegistrationViewController
self.present(vc, animated: true, completion: nil)
结果是:
2017-07-24 16:39:48.135 XXX [8689:286531] Warning: Attempt to present <XXX.RegistrationViewController: 0x7f8246206280> on <XXX.LaunchAppCheck: 0x7f8243d06bd0> whose view is not in the window hierarchy!
我已经在另一个问题中看到了尝试使用viewDidAppear()
,但问题仍然存在。
答案 0 :(得分:1)
这条线可能很困扰你:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
这是实例化除了实际故事板之外的另一个故事板。
这是我使用的代码:
let vc: SettingsViewController = self.storyboard!.instantiateViewController(withIdentifier: "SettingsViewController") as! SettingsViewController
self.present(vc, animated: true, completion: nil)
你不应该尝试与另一个viewController同时加载它,即viewDidLoad(),因为此时它还不在堆栈中。
如果您确实需要同时提供2个viewControllers,请尝试使用延迟调用第二个:
vc = self.storyboard!.instantiateViewController(withIdentifier: "SettingsViewController") as! SettingsViewController
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.present(vc, animated: true, completion: nil)
}
也许有帮助。
不要忘记在Identity Inspector中设置视图的ID。