2010-11-18 147 views
3

我想改变我的tabbar在ViewController中的图像,但要显示新的图像,我必须点击每个标签栏项目。重新加载/刷新ViewController中的标签栏项目?

for (CustomTabBarItem *myItem in self.tabBarController.tabBar.items){ 
     myItem.enabled = YES; 

     myItem.badgeValue = @"1"; 

     UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:[[DesignManager sharedManager] getPathOfFile:@"test.png"]]; 

     *myItem.imageSelect= *myImage; // change images of each item. don't appear if I dont click on the item 
} 

任何人都知道我该如何直接显示这些图像? 谢谢

回答

2

您需要用新的替换旧的标签栏项目。否则,您不能动态更新图像。

最简单的方法是设置由给定选项卡表示的视图控制器的tabBarItem属性。如果你想从该视图控制器内做到这一点,只写:

self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil]; 

或者,你可以从别的地方做,说你的应用程序代理:

UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3]; 
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil]; 
+0

它的工作!谢谢 – blade196 2010-11-18 17:29:30

2

我知道这是一个古老的题。当我需要从另一个活动选项卡更新徽章值时,我遇到了同样的问题。创建另一个UITabBarItem将解决当前的问题,但会在多次调用此代码时导致潜在的内存泄漏。此外,当其他视图控制器访问该选项卡时,他们没有参考新创建的UITabBarItem。我的伎俩是

vc.tabBarItem = vc.tabBarItem; 

它适合我。

+0

非常感谢。 – 2016-07-12 08:06:40

+0

不起作用,ios 10 – 2017-02-10 10:45:57