提交后无法关闭视图控制器

时间:2018-09-13 03:05:39

标签: swift dismiss dismissviewcontroller

介绍了标签栏控制器后,我无法关闭标签栏控制器。 重新安装而不删除应用程序后,我什至无法点击我的按钮。需要卸载并重新安装该应用程序,然后我可以点击按钮

我已经尝试了其他方法来关闭标签栏控制器,但是仍然无法关闭控制器。

这是我当前登录后显示控制器的方式

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

3 个答案:

答案 0 :(得分:0)

尝试关闭所有可能对您有用的控制器

DispatchQueue.main.async {
    self.view.window!.rootViewController?.dismiss(animated: true, completion: {
       print("All controller dismissed successfully..")
    })
}

答案 1 :(得分:0)

尝试一下

self.presentingViewController?.dismiss(animated: true, completion: nil)

答案 2 :(得分:0)

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

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

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

接下来,我将从主页视图控制器到登录视图控制器进行手动模式选择。然后,在主视图控制器的viewDidAppear中,添加代码以确定是否需要登录,并由他们执行登录segue。

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

这只是执行此操作的许多方法之一,但这几乎是使您前进的最简单方法。您不需要任何代码即可加载或设置根视图控制器或其他任何东西。它只是让情节提要为您完成工作。