Swift 快速更改当前UITabBarController的ViewController

Swift 快速更改当前UITabBarController的ViewController,swift,uitabbarcontroller,Swift,Uitabbarcontroller,我有一个带3个选项卡的UITabBarController,每个选项卡中分别有VC1、VC2和VC3。在VC1中,我有一个按钮,按下时,我想用VC4替换VC1。如何获取UITabBarController并将VC阵列更新为现在的VC4、VC2、VC3。我可以在VC1内部执行此操作,还是需要发布appdelegate处理的通知?是的,您可以执行此操作。您可以使用UITabBarController方法setViewControllers:animated,该方法接受视图控制器数组。选项卡的显示顺序

我有一个带3个选项卡的UITabBarController,每个选项卡中分别有VC1、VC2和VC3。在VC1中,我有一个按钮,按下时,我想用VC4替换VC1。如何获取UITabBarController并将VC阵列更新为现在的VC4、VC2、VC3。我可以在VC1内部执行此操作,还是需要发布appdelegate处理的通知?

是的,您可以执行此操作。您可以使用
UITabBarController
方法
setViewControllers:animated
,该方法接受视图控制器数组。选项卡的显示顺序与传递给它的数组的顺序相同(从左到右)。因此,只需重新排列数组并使用该数组调用
setViewControllers:animated
。请记住,
选项卡项
,其图像和标题是根据视图控制器设置的。因此,如果您对视图控制器重新排序,您的选项卡栏项目也将重新排序。

密切相关的可能重复项。可以使用:if let tabBarController=self.tabBarController{let first=self.storyboard?.instanceeviewcontroller(标识符为:“ChatVC”)作为!ChatViewController tabBarController.viewControllers![0]=first}然而,这也改变了标签标题/图标,而不是我真正想要的。谢谢。。我确实试过了,它“起作用”,但是我想保持标签上写着“主页”,当按下时,返回到一个VC,显示该VC页面上原来的6个按钮。我不确定这样做是否违反了苹果的用户设计准则。所以用6个按钮显示“HomeVC”。按一号按钮。用按钮1的VC替换主VC。再次按下“主页”选项卡时,主页VC将再次显示为6个按钮。问题是,当Button1的VC显示时,选项卡会被更新,当再次按下选项卡以切换回主VC时,我不会收到通知