gpt4 book ai didi

ios - 添加新的 Root View Controller

转载 作者:行者123 更新时间:2023-11-29 05:15:35 25 4
gpt4 key购买 nike

我正在开发一个 IOS 应用程序,其中有一个登录页面。当用户第一次打开应用程序时,我希望“登录”页面出现在最开始的位置。

用户登录后,我想更改 root 并将其分配给“MainViewController”(登录完成后用户所在的位置)

我之所以要这样做是因为我想经常清除应用程序中的返回堆栈。

现在的问题是..当我点击注销按钮时,应用程序应该再次导航到登录页面。我怎样才能以良好的方式实现这一目标?

有什么方法可以清除返回堆栈而不返回根 Controller 吗?

任何意见都将不胜感激。

SigninViewController

    func navigateToMain(){
if let storyboard = storyboard{
let vc = storyboard.instantiateViewController(withIdentifier: "TabViewController") as! TabViewController

UIApplication.shared.windows.first?.rootViewController = vc

self.present(vc, animated: true)
}
}

在注销方法中我可以做什么来导航回登录并清除返回堆栈?

最佳答案

当用户按注销时,您应该将登录 View Controller 设置为 Root View Controller 。当您更改 Root View Controller 时,所有以前的导航堆栈都会被清除。

您可以使用此代码进行淡入动画来更改 Root View Controller 。

    func makeRootVC(storyBoardName : String, vcName : String) {
let vc = UIStoryboard(name: storyBoardName, bundle: Bundle.main).instantiateViewController(withIdentifier: vcName)
let nav = UINavigationController(rootViewController: vc)
nav.navigationBar.isHidden = true
self.window?.rootViewController = nav
let options: UIView.AnimationOptions = .transitionCrossDissolve
let duration: TimeInterval = 0.6
UIView.transition(with: self.window!, duration: duration, options: options, animations: {}, completion: nil)
}

注意:将此函数复制到您的 Appdelegate.swift 文件中,然后在您的 View Controller 中,您可以像这样使用它:

@IBAction func logoutBtnPressed(_ sender : Any) { 
let appDelegateObj = UIApplication.shared.delegate as! AppDelegate
appDelegateObj.makeRootVC(storyboardName: "Main", vcName : "YourLoginVC")
}

关于ios - 添加新的 Root View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59224654/

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