Xcode动态添加选项卡图标

4

我看到了不同的答案关于如何在应用程序代理和界面构建器中添加选项卡图标。我想要在我的第一个视图控制器中添加它们,因为我想从plist读取图标图片名称。

建议这样做:

NSArray *viewControllerArray = nil;
viewController1 = <View Init Code>
viewController2 = <View Init Code>
viewController3 = <View Init Code>

1stNavController = [[UINavigationController alloc] initWithRootViewController:viewController1]; 
UIImage *img = [UIImage imageNamed:@"tab_home"];
[1stNavController .tabBarItem initWithTitle:@"Home" image:img tag:1];

但我不喜欢这种方式,因为我认为它不够简洁。我想做类似于以下的事情,但是不知道为什么它没有起作用:

[[self.tabBarController.tabBar.items objectAtIndex:2] setIcon:[UIImage imageNamed:....]];

有解决方案吗?

2
在采用你所描述的“更干净的解决方案”之前,先考虑一下用户可能会通过“更多”、“编辑”重新排列选项卡项目的可能性。这可能不适用于你的应用程序,但它肯定是SDK开发人员考虑的一个普遍问题。 - Till
我的应用程序将有5个标签栏项目,这是由设计固定的,用户将无法重新排列图标。在我的应用程序中重新排列tabbaritem图标没有意义。我想从我的Plist中读取tabbaricon图像,在我的firstviewcontroller中实现。 - Aitul
1个回答

0

可以考虑这样做:

NSArray *viewControllers = self.tabBarController.viewControllers;
((UIViewController*)viewControllers[0]).tabBarItem.image = [UIImage imageNamed:...];
((UIViewController*)viewControllers[1]).tabBarItem.image = [UIImage imageNamed:...];
((UIViewController*)viewControllers[2]).tabBarItem.image = [UIImage imageNamed:...];
((UIViewController*)viewControllers[3]).tabBarItem.image = [UIImage imageNamed:...];
((UIViewController*)viewControllers[4]).tabBarItem.image = [UIImage imageNamed:...];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接