使用storyBoardID

时间:2017-07-24 14:44:36

标签: ios swift viewcontroller

我正在尝试通过此代码加载视图:

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(),但问题仍然存在。

1 个答案:

答案 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。

enter image description here