gpt4 book ai didi

ios - Swift:跳过导航 Controller 堆栈中的第一个(和更多)屏幕

转载 作者:行者123 更新时间:2023-11-28 09:55:30 25 4
gpt4 key购买 nike

我的应用程序中有一个 NavigationController。堆栈中的第一个屏幕是 TermsConditionVC,然后是 LoginVC,然后是 MainVC。当我运行时,它直接转到 TermsConditionsVC。

但是,如果用户曾经同意 TermsConditions 和/或是否登录,我希望跳过 TermsConditionsVC 和/或 LoginVC,直接进入 MainVC。

在这种情况下拥有多个导航 Controller 对我来说没有意义,但我不知道如何跳过屏幕(尤其是导航 Controller 堆栈中的第一个屏幕?

最佳答案

在你的 AppDelegate.swift 文件的 application(didFinishLaunchingWithOptions) 函数中...

首先,在代码中获取 Storyboard 文件:

let storyboard  = UIStoryboard(name: "your_storyboard_name_here", bundle: nil)

接下来获取您的root ViewController。在您的情况下,它可能是 UINavigationController。根 Controller 就是 Storyboard 文件中箭头指向的任何内容

let root = storyboard.instantiateViewControllerWithIdentifier("root") as! UINavigationController

“root”是您实际需要在 Storyboard文件中命名的内容。所以转到“StoryboardName”.storyboard 并单击 UINavigationController。转到身份检查器(左数第三个选项卡)并输入 Storyboard ID。当你这样做时,为你想跳转到的 View 输入一个 Storyboard ID

第三

let destination = storyboard.instantiateViewControllerWithIdentifier("main_vc")

第四个

root.pushViewController(destination, animated: false)

您将动画设置为 false,这样当您跳转到该 View 时就不会显示默认动画。我很确定用户会这样说,看起来就像事情刚刚发生而他们没有按任何东西。这可能会让他们望而却步

第五名

self.window?.rootViewController = root

在此步骤中,您将当前窗口设置为根目录。请记住,根是刚刚推送 MainVC ViewController 的 UINavigationController。如果您不设置 UINavigationController 而是设置 MainVC ViewController,那么您将失去导航栏。因此,请确保您设置的是 root(UINavigationController) 而不是 ViewController,这样您就可以保持导航

关于ios - Swift:跳过导航 Controller 堆栈中的第一个(和更多)屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38031030/

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