gpt4 book ai didi

swift - 如何关闭 Controller 然后切换标签

转载 作者:行者123 更新时间:2023-12-01 14:02:35 24 4
gpt4 key购买 nike

我在标签栏 Controller 中有两个主要的 VC。在第一个 VC 上,当你点击一个按钮时,你会被带到另一个 VC(不是第二个标签栏 VC),当你点击完成按钮时,我想转到第二个标签栏 vc。

通常我只会执行 segue ... 但当我这样做时,它会删除底部的标签栏。所以,我现在只是解雇并回到原来的 VC,但我真的很想去第二个标签栏 vc,所以我试了一下

dismiss(animated: true) { 
self.tabBarController?.selectedIndex = 2
}

我在另一个 SO 帖子上看到了 self.tabBar...,但我似乎无法找到设置索引的位置...我尝试了 1,以防它自动从 0 开始,我已经尝试了 2如果它从 1 开始

我是否接近或是否有更好的方法来实现我想要的?

总结

总结清楚。我有 3 个 View Controller 。 1 和 3 在标签栏 Controller 中。 VC 2 不在 TBC 中。要到达 VC 2,VC 1 上有一个按钮。当用户完成 VC 2 时,他/她点击一个按钮。我不想回到 VC 1,而是想转到 VC 3,但是当我执行 segue 时,它​​转到 VC 3,但删除了标签栏

最佳答案

确保您有一个 UINavigationController 作为第一个 ViewController。然后您可以访问 tabBarController,然后可以切换选项卡:

view controllers

// if vc was pushed
@IBAction func onFinish(_ sender: Any) {
// store tabBarController for later use
let tabBarController = self.tabBarController

// pop to root vc (green one)
_ = self.navigationController?.popToRootViewController(animated: false)

// switch to 2nd tab (red vc)
tabBarController?.selectedIndex = 1
}

// if vc was presented modally
@IBAction func onFinish(_ sender: Any) {
self.dismiss(animated: false, completion: nil)

if let tabBarController = self.presentingViewController as? UITabBarController {
tabBarController.selectedIndex = 1
}
}

// if vc was presented modally + switching tab in completion block
@IBAction func onFinish(_ sender: Any) {
if let tabBarController = self.presentingViewController as? UITabBarController {
self.dismiss(animated: true) {
tabBarController.selectedIndex = 1
}
}
}

关于swift - 如何关闭 Controller 然后切换标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41785584/

24 4 0