无法设置标签栏项目

时间:2016-04-07 13:02:41

标签: ios swift uitabbarcontroller uitabbar uitabbaritem

我正在尝试从TabBarViewController为我的Tab栏设置项目。

但是,一旦我设置了项目,这就是我得到的错误:

  

由于未捕获的异常终止应用' NSInternalInconsistencyException',原因:'不允许直接修改由标签栏控制器管理的标签栏。'

以下是代码:

func imageWithImageSize(image:UIImage , newSize:CGSize) -> UIImage{

        UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0);
        image.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height))
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return newImage

    }



    let image1 = imageWithImageSize(UIImage(named: "Home.png")!, newSize: CGSizeMake(30, 30))

    let homeItem = UITabBarItem(title: "Home", image: image1, selectedImage: image1)


    let image2 = imageWithImageSize(UIImage(named: "Profile.png")!, newSize: CGSizeMake(30, 30))
    let profileItem = UITabBarItem(title: "Profile", image: image2, selectedImage: image2)


    self.tabBar.setItems([homeItem,profileItem, homeItem, homeItem], animated: false)

周围有解决方案吗?

1 个答案:

答案 0 :(得分:2)

你不能直接修改它们,而是可以做以下事情。

1.获取要在其中添加tab的UITabBarController。请选择tabBarController,其名称为tabController。

2.获取tabController的所有viewController。

 guard var viewControllers = tabController.viewControllers else {
      return
    }

3.设置您的视图控制器。对于前我们采取exampleVC。

4.为exampleVC创建tabBarItem

let performanceTabItem = UITabBarItem(title: "example", image: "tabImage", selectedImage: "selectedTabImage" )

5.set

exampleVC.tabBarItem = performanceTabItem

6.使用viewControllers

添加exampleVC
viewControllers.append(exampleVC)

7.set UITabBarController的viewControllers。

tabController.viewControllers = viewControllers