【发布时间】:2018-01-05 16:29:29
【问题描述】:
想象一个像 Twitter 这样的应用程序,一旦您在其中登录,您将永远不会再看到登录屏幕,直到您退出。我通过在启动时更改 appDelegate 中的初始 viewController 来做到这一点。但是,当要退出时,堆栈中的新 VC 下方现在没有任何内容可以关闭。如何在初始视图加载后正确地将登录屏幕设置为 rootViewController,以便在注销时关闭?
在 appDelegate 中,我更改了 initialVC,如下所示:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "RootVC")
self.window?.rootViewController = initialViewController
然后我想基本上将 signInVC 插入到我的初始 VC 下方,以便我可以“解雇”它。
【问题讨论】:
-
我不确定 Twitter 的登录屏幕是什么样的,但它会不会只是一个视图而不是 ViewController?
-
我并不想完全模仿 Twitter,但他们就是这样做的。基本上我希望在堆栈底部登录 VC,但仅在启动之后。
-
@Cody Lucas 当您登录时,您正在将根视图控制器更改为其他一些控制器,换句话说,这就是现在的入口点。我会说在注销时将入口点更改回登录控制器。要识别登录状态,您可以将 bool 值保存在用户默认值中。
-
@TusharSharma 目前我正在尝试在注销时更改根 vc,但不是将其关闭,而是将该 vc 放在堆栈的顶部。
-
@Cody Lucas 您是否使用与上述相同的代码?这次使用标识符和控制器作为登录名。ex-:让 loginlViewController = storyboard.instantiateViewController(withIdentifier: "loginIdentifier") 作为 loginController 并将根更新为 -: window.rootViewController = loginlViewController。但是要从注销屏幕访问根窗口,您需要获取应用委托参考。
标签: ios swift3 uiviewcontroller uistoryboard