呈现新的 ViewController 后 Deinit UITabBarController

Posted

技术标签:

【中文标题】呈现新的 ViewController 后 Deinit UITabBarController【英文标题】:Deinit UITabBarController after presenting new ViewController 【发布时间】:2017-08-28 20:33:02 【问题描述】:

我有一个用户可以登录的应用程序。如果用户启动该应用程序并且已经登录,则 rootViewController 设置为我的自定义 UITabBarController 但当用户未登录时 rootViewController设置为 LoginVC(视图控制器)。我的问题是,当用户注销时,应该显示 LoginVC,并且应该取消初始化 TabBar。

我试过了:

self.tabBarController?.dismiss(animated: true, completion: 
    self.tabBarController?.present(LoginVC(), animated: true, completion: nil)
)

诸如此类... 我可以展示 LoginVC 但是当我打电话给self.tabBarController?.dismiss LoginVC 被解雇而不是 TabBarVC

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

最好将rootViewController 设置为LoginVC。对UITabBarController 的引用将丢失,并将取消初始化。

在 VC 上调用 dismiss 不会关闭该 VC。它解散了它正在呈现的 VC:

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss

关闭视图控制器以模态方式呈现的视图控制器。

【讨论】:

有没有办法为过渡设置动画? ***.com/questions/7703806/…

以上是关于呈现新的 ViewController 后 Deinit UITabBarController的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式呈现新的 ViewController [Swift 3]

如何以编程方式弹出一个视图控制器并呈现一个新的

如何在不知道新的 VC 的情况下将 ViewController 呈现在另一个之上?

当 ViewController 被呈现的 ViewController 覆盖时触发事件

在 UISplitViewNavigator 的 MasterViewController 上呈现 ViewController

按下 CollectionViewCell 内的按钮后如何呈现 ViewController