首页 > 解决方案 > iOS:如何通过单击 tabBarItem 的第 3 个索引打开 tabBarItem 的第 0 个索引

问题描述

tabBarItem我的一个场景中有 5 个,我必须通过单击第三个UITabBarController 打开第一个索引UITabBarItemUITabBarItem

我的方法如下:

extension FiveTabbarController: UITabBarControllerDelegate {
    override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

         if item == (self.tabBar.items!)[2] {
             tabBar.selectedItem = (self.tabBar.items!)[0] // ERROR
             self.selectedIndex = 0 // NOT WORKING
         } 

    }
}

错误:*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不允许直接修改由标签栏控制器管理的标签栏。”

请指导我如何实现这一目标。

标签: iosswiftuitabbarcontrolleruitabbar

解决方案


您可以通过执行以下操作来实现该行为:

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { 
    if selectedIndex == 2 {
        self.selectedIndex = 0
    }
}

错误的原因是因为您不应该修改 selectedItem,而只修改索引。通过修改索引,标签栏控制器将设置 selectedItem。

已编辑 没有注意到您使用的是 tabBar 的方法而不是 tabbarcontroller 的。


推荐阅读