在我的iOS 7+应用程序中,我有一个4项UITabBarController。根据某些条件(myCondition),其中一个项需要转换为viewController_A 或一个viewController_B。
我有一个TabBarController类,我已根据myCondition设置逻辑以更改item.image和item.title。代码工作正常,但我不知道如何将item1发送到viewController_A 或 viewController_B
UITabBarController *tabBarController = (UITabBarController *)self;
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
UITabBarItem *item3 = [tabBar.items objectAtIndex:3];
[这里有更多代码]
if (myCondition) {
item1.selectedImage = myItemImageSel_B;
item1.image= myItemImage_B;
item1.title= myItemTitle_B;
}
else
{
item1.selectedImage = myItemImageSel_A;
item1.image= myItemImage_A;
item1.title= myItemTitle_A;
}
目前通过故事板为所有4个项目设置了segues。
我使用正确的方法吗?或者我应该向viewController_B添加一个新项目并隐藏它直到我的条件为真?
感谢您的帮助!
答案 0 :(得分:0)
您可以做的一种方法是在tabview
内设置标记值,然后使用switch case statement
而不是if else condition
。它也会更快。
答案 1 :(得分:0)
您可以使用UITabBarControllerDelegate:
tabBarController.delegate = self
然后实现tabBarController:shouldSelectViewController:
- (void)configureTabbarItem:(UITabBarItem *)item image:(UIImage *)image selectedImage:(UIImage *)selectedImage andTitle:(NSString *)title {
item.selectedImage = image;
item.image = selectedImage;
item.title = title;
}
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
NSArray *items = tabBarController.tabBar.items;
if (MyCondition) {
[self configureTabbarItem: items[0]
image: myItemImageSel_B
selectedImage: myItemImage_B
andTitle: myItemTitle_B];
}
else {
[self configureTabbarItem: items[0]
image: myItemImageSel_A
selectedImage: myItemImage_A
andTitle: myItemTitle_A];
}
return YES;
}