ios - 如何打开新的 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。
任何帮助,将不胜感激,
解决方案
已经给出的答案很好;我只想在这里扩展问题的性质。
问题是我们有一个只想使用一次的登录屏幕。当它通过后,我们想进入一个基本屏幕,从现在开始,当应用程序启动时,我们将始终从基本屏幕开始。
从登录屏幕或基本屏幕启动的问题,我留到一边。让我们来谈谈登录屏幕和基本屏幕应该如何关联,当使用登录屏幕时。我可以想到三种方法:
从登录屏幕呈现基本屏幕,而不关闭登录屏幕。我知道这听起来很疯狂,但为什么不呢?只需呈现基本屏幕,让用户无法返回登录屏幕。基本屏幕现在覆盖了整个界面,我们可以继续正常使用该应用程序。
撕掉整个接口,换掉。很多人这样做:您只需将窗口的根视图控制器更改为基本屏幕。然而,我不喜欢这个。
从用户从未真正与之交互的父视图控制器开始。登录屏幕是该父级的子级。使用任何所需的转换将登录屏幕替换为基本屏幕。那是我真正喜欢的解决方案。
推荐阅读
- android - 如何查询以仅显示具有多个属性的领域数据库中的单个属性?
- r - 将图叠加成一张图
- hadoop - Hive 数据和 Metastore 如何相互通信和集成?
- tfs - 使用 TFS 2018 构建多个具有不同配置文件的 .msi?
- php - 按钮单击时的 Wordpress AJAX 回显
- python - 是否可以创建一个由另一个列表的元素百分比组成的列表?
- git - git checkout 来自另一个分支的单个文件并放在不同的文件夹中
- google-cloud-ml - 已解决:google Cloudml BASIC TIER 中的设备上没有剩余空间。cloudml中每一层的磁盘大小是多少?
- ruby-on-rails - 用于提交想法的电报机器人
- joomla - Joomla Helix3 自定义 Javascript 白页