如果用户已登录,我的应用程序具有以下流程
加载屏幕 -----> 主屏幕 -----> 应用程序的其余部分
如果他不在,则以下流程:
加载屏幕 -----> 登录屏幕 -----> 主屏幕 -----> 应用程序的其余部分
现在我正在实现注销功能。我已将以下代码添加到 main Screen
中:
func handleLogout() {
if self.presentingViewController != nil {
var vc = self.presentingViewController
while ((vc!.presentingViewController) != nil) {
vc = vc!.presentingViewController
}
vc?.dismissViewControllerAnimated(true, completion: {
})
}
}
当应用返回到 加载屏幕
然后按预期加载 Login Screen
。但是,如果遵循 2nd
路径(应用启动时用户未登录,并且使用了 Login Screen
)代码导致 Login Screen
被直接打开,整个注销过程失败。有没有一种方法可以确保 Loading Screen
始终由此代码加载,而不管遵循两条路径中的哪一条。
最佳答案
使用 unwind segues!
您基本上添加了一个连接“主屏幕”和“登录屏幕”的展开转场。给它一个标识符,你可以随时启动 segue。在 handleLogout
中:
func handleLogout() {
self.performSegueWithIdentifier("your identifier", sender: self)
}
有关如何创建展开转场的详细信息:https://www.andrewcbancroft.com/2015/12/18/working-with-unwind-segues-programmatically-in-swift/
关于ios - DismissViewController swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809366/