首页 > 解决方案 > 如何打开新的 ViewController 关闭启动它的 iOS Swift

问题描述

我一直在搜索和阅读许多 SO 文章,但似乎无法让它发挥作用。

我有一个名为 Startup 的视图控制器,它执行一些 Web 请求等,然后将用户带到登录屏幕。

登录后,我正在使用此代码尝试在关闭登录视图控制器后打开名为 Home 的内容视图控制器。

self.dismiss(animated: true, completion: {
        let mainStoryboard: UIStoryboard = UIStoryboard(name:"Main",bundle:Bundle.main)
        let secondViewController: Home = mainStoryboard.instantiateViewController(withIdentifier: "home") as! Home
        self.presentingViewController?.present(secondViewController, animated: true, completion: nil)
    })

我的问题是 Login VC 可以正常关闭,但没有打开 Home VC,因为 self.presentingViewController 为 nil。

任何帮助,将不胜感激,

标签: iosswiftxcodestoryboard

解决方案


已经给出的答案很好;我只想在这里扩展问题的性质。

问题是我们有一个只想使用一次的登录屏幕。当它通过后,我们想进入一个基本屏幕,从现在开始,当应用程序启动时,我们将始终从基本屏幕开始。

从登录屏幕或基本屏幕启动的问题,我留到一边。让我们来谈谈登录屏幕和基本屏幕应该如何关联,当使用登录屏幕时。我可以想到三种方法:

  • 从登录屏幕呈现基本屏幕,而不关闭登录屏幕。我知道这听起来很疯狂,但为什么不呢?只需呈现基本屏幕,让用户无法返回登录屏幕。基本屏幕现在覆盖了整个界面,我们可以继续正常使用该应用程序。

  • 撕掉整个接口,换掉。很多人这样做:您只需将窗口的根视图控制器更改为基本屏幕。然而,我不喜欢这个。

  • 从用户从未真正与之交互的父视图控制器开始。登录屏幕是该父级的子级。使用任何所需的转换将登录屏幕替换为基本屏幕。那是我真正喜欢的解决方案。


推荐阅读