我正在尝试从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)
周围有解决方案吗?
答案 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
添加exampleVCviewControllers.append(exampleVC)
7.set UITabBarController的viewControllers。
tabController.viewControllers = viewControllers