应用不同的故事板
问题描述:
实例化视图控制器,当我写的斯威夫特3(最新的Xcode)应用不同的故事板
我控制崩溃,如果用户登录(异步任务检查设备和数据库之间的参数)。
如果响应说,设备无效,我显示登录屏幕。看起来像这样:
extension UIViewController {
func forceLogin() {
let storyboard = UIStoryboard(name: "Login", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
let navController = UINavigationController(rootViewController: controller)
self.present(navController, animated: true, completion: nil)
}
}
登录故事板看起来就像这样。
当用户成功登录时,该功能开始:
DispatchQueue.main.async {
self.dismiss(animated: true, completion: nil)
}
解雇可以在第一和第二视图控制器发生。
想象一下这种情况:
- 在用户登录并驳回第二VC
- 设备正在从数据库中删除
- 检查后,用户需要重新登录 后回来主要应用
-
forceLogin()
和...
的libC++ abi.dylib:以NS类型的未捕获异常终止
这发生在使用self.present(navController, animated: true, completion: nil)
时。
我有一些想法什么可能引起死机,但我不知道:
- 在代码中的故事板
- 辞退创建导航控制器反而是不够的 - 故事板莫名其妙地停留在内存中,可以” t再次实例化
什么会导致问题,以及如何避免崩溃?
如果需要更多信息,请询问。
答
我总是忘记这一点。记住你的界面任务是这样的:
DispatchQueue.main.async {
self.present(navController, animated: true, completion: nil)
}