重载/刷新在视图控制器标签栏项目?
-
26-09-2019 - |
题
我想我在一个视图控制器的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;
这对我的作品。
不隶属于 StackOverflow