无法设置标签栏图标 iOS

Can't set tab bar icon iOS

我有一个带标签栏的 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]; 代码行上,我收到警告 "Expression Result unused" 并且选项卡项既没有获得我设置的图像也没有文本。

我做错了什么?

您已经初始化了您的朋友物品——它已经制作完成,您正在取回它。您需要删除 initWithImage 行并更改标题和图像之类的属性,例如:

[friendItem setImage:@"myImage"];

您可以对标题和所选图像执行相同的操作。这个有用吗?

您无法通过这种方式访问​​ UITabBar 中的项目。基本上,一旦创建了 UITabBarItem,它就是 read-only。 (唯一的例外是 badgeValueselectedImage 和标题定位。)

此外,您收到警告是因为 init... 方法 returns 一个您未使用的值。在现有 object 上调用 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。因此,您需要访问您要修改的 UIViewControllertabBarItem 属性。