gpt4 book ai didi

ios - 如何模拟返回一个未显示的ViewController

转载 作者:行者123 更新时间:2023-11-29 06:01:56 25 4
gpt4 key购买 nike

我有一个带有登录屏幕的 iOS 应用程序。用户登录后,我使用 presentViewController 转到应用程序的主屏幕。如果用户从主屏幕注销,我将关闭当前(主) View Controller 以返回到登录屏幕。这工作得很好,并使用“模态呈现”的标准动画。

现在我想修改它,以便如果用户已经登录,则跳过登录屏幕。因此,在我的应用程序委托(delegate)中,我执行以下操作(伪代码)

if (user logged in)
presentViewController(mainVC)
else
presentViewController(loginVC)

问题:如果用户已经登录并且我直接显示主视图 Controller ,我不能再“关闭”它以返回登录 View Controller (因为这从未显示过)。然后我如何“模拟”返回登录 VC?

在 Android 中,可以通过手动构建事件的“后堆栈”来实现类似的效果 ( https://developer.android.com/training/implementing-navigation/temporal )。 iOS 中有类似的东西吗?

最佳答案

您必须在应用程序启动时进行检查。用户是否登录。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {


if isUserLoggedIn {
//Set Main ViewController
self.window?.showAuthenticationVC

} else {
//Optional.. But you can set here Logic VC
self.window?.showMainController()
}
return true
}

isUserLoggedIn 管理用户登录或未登录的标志。您可以将该值存储在 UserDefaults 中。

管理登录和注销用户的 rootViewController。

extension UIWindow {



func showAuthenticationVC() {

self.makeKeyAndVisible()
let authenticationVC : LoginController = LoginController()
let navigationController = UINavigationController(rootViewController: authenticationVC)
self.rootViewController = navigationController

}

func showMainController() {
self.makeKeyAndVisible()
let authenticationVC : MainController = MainController()
let navigationController = UINavigationController(rootViewController: authenticationVC)
self.rootViewController = navigationController
}

}

以及在登录操作时。使用 AppDelegate window 设置 showMainController()。与注销时使用 AppDelegate 的 window 属性调用 showAuthenticationVC() 时相同。

希望对您有帮助!

关于ios - 如何模拟返回一个未显示的ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com