0

呈现标签栏控制器后,我无法关闭标签栏控制器。在不删除应用程序的情况下重新安装后,我什至无法点击我的按钮。需要卸载并重新安装应用程序,然后我才能点击按钮

我已经尝试过其他一些关闭标签栏控制器的方法,但仍然无法关闭控制器。

这是我目前在登录后展示控制器的方式

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()
4

3 回答 3

0

唔。尽管我仍然不确定发生了什么,但您的更新会有所帮助。我的猜测是您将登录设置为 root,然后显示主页。但我不确定你在哪里或试图解雇什么。如果它在登录中,那么没有什么可以忽略的,因为它是根视图控制器。

我的建议是重新配置故事板。因为您手动呈现视图控制器,所以我将假设情节提要不包含控制器之间的任何 segue。我建议添加 segues 并使用它们。

我将主视图控制器设置为初始视图控制器,并将主情节提要设置为情节提要以加载到应用程序设置中。然后可以删除所有加载情节提要和设置根视图控制器的代码。

接下来我会从主视图控制器到登录视图控制器进行手动模态segue。然后在主视图控制器的 viewDidAppear 中,我将添加代码来决定是否需要登录并对其执行登录 segue。

然后在登录视图控制器中,您可以执行关闭操作,它将删除模型登录视图。

这只是执行此操作的众多方法之一,但它几乎是让您开始的最简单的方法。您不需要任何代码来加载或设置根视图控制器或其他任何东西。它只是让故事板为您完成工作。

于 2018-09-14T00:01:02.960 回答
0

尝试关闭所有提供的控制器,它可能对您有用

DispatchQueue.main.async {
    self.view.window!.rootViewController?.dismiss(animated: true, completion: {
       print("All controller dismissed successfully..")
    })
}
于 2018-09-13T03:46:01.277 回答
0

尝试这个

self.presentingViewController?.dismiss(animated: true, completion: nil)
于 2018-09-13T06:35:16.013 回答