我有一个带标签栏的UITabBarController(当然),我试图使用以下代码将自定义图像设置到标签栏上的标签:
- (void)viewDidLoad
{
[super viewDidLoad];
UITabBar *menuTab = self.tabBarController.tabBar;
UIImage *friendImage = [UIImage imageNamed:@"friends_tab@2x.png"];
UIImage *friendImageSelected = [UIImage imageNamed:@"friends_tab_selected@2x.png"];
UITabBarItem *friendItem = [menuTab.items objectAtIndex:1];
[friendItem initWithTitle:@"Friends" image:friendImage selectedImage:friendImageSelected];
}
在[friendItem initWithTitle:@"Friends" image:friendImage selectedImage:friendImageSelected];
代码行,我收到警告"表达结果未使用"并且标签项既不会得到我设置的图像也不会得到文本。
我做错了什么?
答案 0 :(得分:1)
您无法以UITabBar
方式访问这些项目。基本上,一旦UITabBarItem
被创建,它就是只读的。 (唯一的例外是badgeValue
,selectedImage
和标题定位。)
此外,您收到了警告,因为init...
方法会返回您未使用的值。在现有对象上调用init...
方法是错误的。
相反,你需要做的事情是这样的:
- (void)viewDidLoad {
[super viewDidLoad];
UIViewController *vc = self.viewControllers[1];
UIImage *friendImage = [UIImage imageNamed:@"friends_tab"];
UIImage *friendImageSelected = [UIImage imageNamed:@"friends_tab_selected"];
UITabBarItem *friendItem = [[UITabBarItem alloc] initWithTitle:@"Friends" image:friendImage selectedImage:friendImageSelected];
vc.tabBarItem = friendItem;
}
请注意,我创建了 完全 新UITabBarItem
。当您拥有UITabBarController
时,您无法以与自己创建和管理的方式相同的方式访问其UITabBar
。因此,您需要访问要修改的tabBarItem
的{{1}}属性。
答案 1 :(得分:-1)
您已经初始化了您的朋友项目 - 它已经制作好了,您正在检索它。您需要删除initWithImage行并更改标题和图像属性,例如:
[friendItem setImage:@"myImage"];
您可以对标题和所选图像执行相同操作。这有用吗?