gpt4 book ai didi

ios - Swift:通过 TabBar 和导航 Controller 以编程方式从一个 View 转换到另一个 View

转载 作者:搜寻专家 更新时间:2023-11-01 07:22:42 25 4
gpt4 key购买 nike

用户登录并登陆 viewNumOne,他们填写自己的姓名和地址,然后可以看到 viewNumTwo 和 viewNumThree。他们现在注销。当他们重新登录时,我希望他们直接进入 viewColorBlue(这是我遇到问题的地方)。

(登录屏幕)查看带有登录字段的 Controller 。登录后,他们会转到 rootVC,这是一个 TabBar,然后他们登陆第一个选项卡,即 viewNumOne(这很好用)

(根)标签栏:

(第一个选项卡 - tabBar[0])viewNumNavController > viewNumOne(名称/地址信息字段在这里)> viewNumTwo > viewNumThree

(第二个选项卡 - tabBar[1])viewColorNavController > viewColorRed > viewColorBlue > viewColorWhite(注销按钮在这里)

这是我试过但崩溃的代码:

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

let tabBarController = mainStoryboard.instantiateInitialViewController() as! UITabBarController
tabBarController.selectedIndex = 1

let viewColorNaviCon = tabBarController.viewControllers![1] as! UINavigtionController
let viewColorBlueVC = viewColorNaviCon.topViewController as! ViewColorBlueController
self.presentViewController(viewColorBlueVC, animated: true, completion: nil)

最佳答案

我花了 20 个小时才弄明白这个问题,希望这能一直拯救其他人。您需要做的是重置 TabBar 的 Navigation Controller 的 Root View Controller 。

这是第一步。假设用户登陆 viewNumOne,并在其中填写了姓名和地址。假设他们正确填写了自己的姓名和地址,如果他们退出并重新登录,他们就不需要再看到这一幕了。要呈现 vc 的新场景,您必须首先设置要为其更改 vc 的标签栏的导航 Controller 。

let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let tabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("MainTabBarController"
tabBarController.selectedIndex = 1
let viewNumNavController = tabBarController.viewControllers![1] as! ViewNumNavigationController

这是第二步。您必须制作一个您希望用户看到的新 View Controller 的数组。

    //Array of view controllers you want to set as the Navigation Controller's new array of VC's
let viewColorRedVC = mainStoryboard.instantiateViewControllerWithIdentifier("ViewColorRedController") as! ViewColorRedController
let viewColorBlueVC = mainStoryboard.instantiateViewControllerWithIdentifier("ViewColorBlueController") as! ViewColorBlueController
let viewColorWhiteVC = mainStoryboard.instantiateViewControllerWithIdentifier("ViewColorWhiteController") as! ViewColorWhiteController
let newArrayOfVCs = [viewColorRedVC, viewColorBlueVC, viewColorWhiteVC]

现在最后一步是使用上面的数组更改标签栏的 Root View Controller 。

//This method is what sets the Navigation Controller's new child views to be presented
viewNumNavController.setViewControllers(newArrayOfVCs, animated: false)
//This method is what sets the exact view controller you want use as the actual root vc (the very first scene the user will see)
viewNumNavController.popToViewController(viewColorRedVC, animated: true)
self.presentViewController(tabBarController, animated: true, completion: nil)

希望这对您有所帮助!

关于ios - Swift:通过 TabBar 和导航 Controller 以编程方式从一个 View 转换到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37907772/

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