长期倾听者,第一次来访者。
我正在开发一个应用程序,它包含一个登录页面( 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/