IOS Swift 关闭标签栏 Controller 并启动一个新的

标签 ios iphone swift uitabbarcontroller

长期倾听者,第一次来访者。

我正在开发一个应用程序,它包含一个登录页面( View Controller ),然后关闭以显示一个带有 4 个选项卡的选项卡栏 Controller ,每个选项卡都有一个带有自己 View 的导航 Controller 。

我希望允许用户单击“注销”按钮,该按钮关闭所有与选项卡栏 Controller 关联的 View ,转至登录 View Controller ,然后实例化一个新的选项卡栏 Controller 。在不关闭和创建新的选项卡栏 Controller 的情况下,所有选项卡 View 都保留旧用户数据,因为它们填充了“ViewDidLoad”函数。除非有另一种方法可以清除和触发“ViewDIdLoad”函数而不关闭所有 View /标签栏 Controller 。

我也对其他解决方案持开放态度,因为我是 IOS Swift 编程的新手并且是自学的。

我的结构如下所示(请注意,应用程序首先进入选项卡栏 Controller ,如果没有找到当前用户,它会返回到登录 View Controller ,登录 View Controller 会在登录时自动关闭):Login/Tab Bar Controller relationship

最佳答案

Storyboard 看起来有点困惑。我假设应用程序首先加载选项卡栏,然后以模态方式呈现登录 View Controller 。但是,从 Login 到 Tab Bar 的 segue 是什么?推 segue?我想它没有被使用,正如你所说,登录只是被取消了。

要销毁标签栏并从 Storyboard 中加载一个新标签栏,您不能使用 segues。它甚至更容易。只需将 Tab Bar 的新实例分配给应用程序窗口的 rootViewController。

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController = theNewTabBar

要实例化“theNewTabBar”,您需要在 Storyboard中设置标识符并使​​用

storyboard instantiateViewControllerWithIdentifier:

关于IOS Swift 关闭标签栏 Controller 并启动一个新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407857/

相关文章:

ios - 使用 Alamofire 4.0 (Swift 3) 下载文件

iOS 8 自动布局 - 视觉格式语言如何向 super View 边缘添加约束

ios单元格突出显示颜色clipstobounds

android - 按下设备后退按钮时出现 Flutter WebView 异常

ios - SKSpriteNode 使用 UIColor 设置颜色

iphone - InfoPlist.strings 路径和 SVN

ios - DrawRect 超出 View 范围

ios - iOS swift 中的 scrollViewDidEndDecelerating 问题?

ios - UITextField:textRectForBounds:与。编辑 RectForBounds:

swift - 如何将值类型对象用作引用类型?