在出现之后不能解雇视图控制器

问题描述 投票:0回答:3

在呈现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()
swift dismiss dismissviewcontroller
3个回答
0
投票

尝试解雇所有提供的控制器,它可能适合你

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

0
投票

试试这个

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

0
投票

嗯。您的更新有帮助,虽然我仍然不确定发生了什么。我的猜测是你以root身份登录,然后回家。但是我不确定你想要解雇的地方或者是什么。如果它在登录,那么没有什么可以解雇,因为它是根视图控制器。

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

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

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

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

这只是实现这一目标的众多方法之一,但它是让您前进的最简单方法。您不需要任何代码来加载或设置根视图控制器或其他任何东西。它只是让故事板为您完成工作。

© www.soinside.com 2019 - 2024. All rights reserved.