我想我在一个视图控制器的TabBar的变化图像,但显示新的图像,我必须点击每个标签栏项目。

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
}

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

有帮助吗?

解决方案

您需要用一个新的来代替旧标签栏项目。不能动态否则更新图像。

要做到这一点的最简单的方法是设置由在给定标签表示的视图 - 控制器的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];

其他提示

我知道这是一个老问题。我遇到同样的问题,当我需要更新从另一个活动标签的徽章值。创建另一个UITabBarItem将解决你目前的问题,但会导致当该代码被称为多次潜在的内存泄漏。另外,当其他视图控制器访问的标签,他们没有提及新创建UITabBarItem。我的诀窍是

vc.tabBarItem = vc.tabBarItem; 

这对我的作品。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top