我有一个标签栏控制器中的两个主要VC.在第一个VC上点击一个按钮,你将被带到另一个VC(而不是第二个标签栏VC),当你点击完成按钮时,我想转到第二个标签栏vc.
通常我会执行segue ...但是当我这样做时它会删除底部的标签栏.所以,我现在只是解雇并回到最初的VC,但我真的想去第二个标签栏vc,所以我尝试了这个
dismiss(animated: true) { self.tabBarController?.selectedIndex = 2 }
我在另一个SO帖子上看到了self.tabBar ...但是我似乎无法找到我设置索引的位置...我试过1以防万一它自动从0开始,并且我试过2以防它开始从1开始
我是关闭还是有更好的方式来实现我想要的?
摘要
总结清楚.我有3个视图控制器.1和3位于标签栏控制器中.VC 2不在TBC中.要进入VC 2,VC 1上有一个按钮.当用户在VC 2上完成时,他/她点击一个按钮.而不是仅仅回到VC 1,我想转到VC 3,但是当我执行segue时,它转到VC 3但是移除了Tab Bar
确保您拥有UINavigationController
第一个ViewController.然后您可以访问tabBarController,然后可以切换选项卡:
// 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 } } }