Swift更改当前UITabBarController的ViewController

问题描述:

我有一个UITabBarController有3个选项卡,分别在每个选项卡中具有VC1,VC2和VC3。在VC1中,我有一个按钮,当按下时,我想用VC4替换VC1。如何获取UITabBarController并将VC数组更新为VC4,VC2,VC3。我可以在VC1内部做到这一点,还是需要发布appdelegate处理的通知?Swift更改当前UITabBarController的ViewController

+1

[在Swift中设置UITabBarController的视图控制器]的可能重复(https://stackoverflow.com/questions/31720420/set-view-controllers-of-uitabbarcontroller-in-swift) – the4kman

+0

密切相关。 能够做到这一点: if let tabBarController = self.tabBarController let first = self.storyboard?.instantiateViewController(withIdentifier:“ChatVC”)as! ChatViewController tabBarController.viewControllers![0] =第一 } 然而 改变标签标题/图标以及和不是我真的wented – justdan0227

是的,你可以做到这一点。您可以使用UITabBarController方法setViewControllers:animated,它接受视图控制器数组。选项卡以与传递给它的阵列相同的顺序出现(从左到右)。所以只需重新排列数组,并用该数组调用setViewControllers:animated。请记住tabBarItem,它的图像和标题是按视图控制器设置的。所以如果你重新排序视图控制器你的标签栏项目也将重新排序。

+0

谢谢..我曾尝试这一点,这“工程”,但是我想保持选项卡为HOME,当按下时返回到VC,该VC显示该VC页面上的原始6个按钮。不知道我是否违反Apple用户设计指南。因此用6个按钮显示“Home VC”。按下按钮一个。用Button1的VC替换Home VC。当Home标签再次按下时,Home VC会再次显示6个按钮。问题是,当Button1的VC显示该选项卡被更新,并且当再次按下该选项卡切换回Home VC时,我不会收到通知 – justdan0227