我经历了一些问题并发现了这个:
NSLog(@"selected tab index => %d",self.tabBarController.tabBar.selectedItem.tag);
但是这总是返回0。 我做错了什么?
AppDelegate中的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Assign tab bar item with titles
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem2 = [tabBar.items objectAtIndex:1];
UITabBarItem *tabBarItem3 = [tabBar.items objectAtIndex:2];
return YES;
}
编辑:
我想做这样的事情:
if(self.tabBarController.tabBar.selectedItem.tag == 0)
{
[[UITabBar appearance] setSelectedImageTintColor:[UIColor orangeColor]];
}
else if(self.tabBarController.tabBar.selectedItem.tag == 1)
{
[[UITabBar appearance] setSelectedImageTintColor:[UIColor blueColor]];
}
答案 0 :(得分:2)
您必须将标记值分配给Storyboard Editor中的项目,或者以编程方式将其分配给零。
答案 1 :(得分:2)
试试吧:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
NSLog(@"%d",tabBarController.selectedIndex); //2147483647, will return tab 0
tabBarController.selectedIndex = 1;
NSLog(@"%d",tabBarController.selectedIndex); // will return 1
return YES;
}
获得它:
//my comment : be sure that self.tabBarController is tabBarController from your appDelegate
if(self.tabBarController.selectedIndex == 0)
{
[[UITabBar appearance] setSelectedImageTintColor:[UIColor orangeColor]];
}
else if(self.tabBarController.selectedIndex == 1)
{
[[UITabBar appearance] setSelectedImageTintColor:[UIColor blueColor]];
}
答案 2 :(得分:0)
您应该在故事板部分解决此问题。选择您的UITabBarItem并转到其属性。转到选项"标记"并设置值(默认情况下全部设置为0值)
答案 3 :(得分:0)
原始问题询问如何使用 TAG 获取/设置UITabBarItem。我在这里看不到真正的答案。
标记 IS 使用的价值更高,特别是如果您想要保存或者记住"该值是为了能够恢复" last"在将来的会话中选择选项卡。如果用户从 更多菜单 重新排列选项卡,则TabBar上任何viewController的索引都可以更改,而如果应用程序设计得当,则标签不会更改。
获取当前所选TabBarItem的标记:
_tabBarController.tabBar.selectedItem.tag;
从值中恢复/设置它:
unsigned lastSelectedIndex = [[userSettings objectForKey:SavedTabLastViewedKey] unsignedIntValue];
for(UIViewController *vc in _tabBarController.viewControllers) {
if(vc.tabBarItem.tag == lastSelectedIndex) {
_tabBarController.selectedViewController = vc;
break;
}
}