在呈现Tab栏控制器后,我无法关闭标签栏控制器。重新安装后我也无法点击我的按钮而不删除应用程序。需要卸载并重新安装应用程序,然后我可以点击按钮
我已经尝试了一些其他方法来解除标签栏控制器,但仍然无法关闭控制器。
这是我目前登录后呈现控制器的方式
let storyboard = UIStoryboard.init(name: "Main", bundle: Bundle.main)
let loginVC = storyboard.instantiateViewController(withIdentifier: "Home")
self.present(loginVC, animated: true, completion: nil)
这是我目前解雇控制器的方法
@IBAction func btnLogout_TouchUpInside(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
这是我的根本观点
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
if defaults.bool(forKey: "isLoggedIn") {
// Show Home screen
window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "Home")
} else {
// Show Login screen
window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "Login")
}
window?.makeKeyAndVisible()
尝试解雇所有提供的控制器,它可能适合你
DispatchQueue.main.async {
self.view.window!.rootViewController?.dismiss(animated: true, completion: {
print("All controller dismissed successfully..")
})
}
试试这个
self.presentingViewController?.dismiss(animated: true, completion: nil)
嗯。您的更新有帮助,虽然我仍然不确定发生了什么。我的猜测是你以root身份登录,然后回家。但是我不确定你想要解雇的地方或者是什么。如果它在登录,那么没有什么可以解雇,因为它是根视图控制器。
我的建议是重新配置故事板。因为您手动呈现视图控制器,所以我将假设故事板不包含控制器之间的任何段。我建议添加segues并使用它们。
我将主视图控制器设置为初始视图控制器,并将主故事板设置为要在应用程序设置中加载的故事板。然后可以删除加载故事板和设置根视图控制器的所有代码。
接下来,我将从主视图控制器到登录视图控制器进行手动模式转换。然后在主视图控制器的viewDidAppear中添加代码以确定是否需要登录并且他们执行登录segue。
然后在登录视图控制器中,您可以执行解除操作,它将删除模型登录视图。
这只是实现这一目标的众多方法之一,但它是让您前进的最简单方法。您不需要任何代码来加载或设置根视图控制器或其他任何东西。它只是让故事板为您完成工作。