ios - 如何在没有导航 Controller 的情况下从第三个 ViewController 弹出到初始 ViewController?

标签 ios swift cocoa-touch

我知道这可能是一项简单的任务,但我不知道如何解决它。顺便说一下,我没有使用 NavigationController。基本上我的应用程序中有 3 个 View Controller :

  • -LoginVC(它有一个注册按钮。点击后,它会转到 SignupVC)
  • -SignupVC(如果用户注册,会推送到MainAppVC)
  • -MainAppVC(有一个注销按钮)

对于转换,我使用方法:present(viewController, animated:, completion:)

当用户通过 LoginVC 登录时,他将按预期看到 MainAppVC。当他注销时,我将dismiss 当前 VC(即 MainAppVC),将他送回 LoginVC

现在这是我有疑问的情况。当用户没有帐户并注册时,这是他将通过的 VC(LoginVC > SignupVC > MainAppVC)。一旦他注册成功,他就会看到 MainAppVC。现在,一旦他注销,他将从 MainAppVC 转换到 SignupVC,因为我使用了相同的 dismiss 方法。

我想要做的是将用户从 MainAppVC 发送回 LoginVC。如果不在我的项目中使用导航 Controller ,我该如何做到这一点?热门应用程序(Facebook、Twitter、Instagram 等)如何在其应用程序中处理此问题?

我能想到的一种方法是从第 3 个 VC 到第一个 VC 执行 segue,但我认为这是一种肮脏的方法,因为它只是添加到堆栈,而不是弹出它,这是一个潜在的问题。

最佳答案

三种解决方案。
1.使用窗口 Root View Controller 。在登录和主视图 Controller 之间设置 Root View Controller 。

let loginSb = UIStoryboard(name: "Login", bundle: nil)
let loginVc = loginSb.instantiateInitialViewController()
window!.rootViewController = loginVc

2.第一次显示主视图 Controller 时关闭注册 View Controller 。然后从登录 View Controller 显示主视图 Controller 。
3.尝试在关闭主视图 Controller 时关闭完成 block 中的注册 View Controller 。
我认为第一个最好。

关于ios - 如何在没有导航 Controller 的情况下从第三个 ViewController 弹出到初始 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952438/

相关文章:

iphone - iPhone 应用程序的大小有什么限制?

objective-c - 在自定义委托(delegate) block UI 中执行工作——为什么?

ios - 从 native 代码调用 JavaScript 函数

ios - 我的打印语句都没有出现在 Xcode 控制台中

ios - Swift NSCache 结构未正确保存

swift - 有什么方法可以用 swiftUI 获取 gif 作为背景吗?

iphone - 更改 UIModalTransitionStyleFlipHorizo​​ntal 的背景颜色

ios - 如何使对象 ID 易于阅读?

ios - AUParameterTree dealloc导致死锁

ios - 从 CTFramesetterRef 检索 NSAttributedString?