通过代码将标题/图标等设置为在 IB 中创建的 TabBarItem?

Posted

技术标签:

【中文标题】通过代码将标题/图标等设置为在 IB 中创建的 TabBarItem?【英文标题】:Set title/icon etc to TabBarItem created in IB, through code? 【发布时间】:2011-09-06 13:18:56 【问题描述】:

我有一个通过 IB 创建的 TabBar,我选择了“创建新项目”->“标签栏应用程序”。有没有办法让我通过代码访问其中一个 TabBarItems 进行自定义?

在我看来是这样的: [[self.tabBarController.tabBar.items objectAtIndex:0] setTitle:@"Button one"]; 应该将该项目的标题设置为“按钮一”,但事实并非如此。标题本身不是问题(我也可以通过 IB 设置),但是添加图标似乎是。

所以总结一下,我真正想知道的是:有没有办法将Icon添加到通过IB创建的TabBarItem?

解决方案: 在第一个视图中添加 viewDidLoad,在启动应用时自动加载:

UITabBarController *tb = [self tabBarController];
[[tb.tabBar.items objectAtIndex:1] setTitle:@"Title"];

让我设置第二个按钮的标题 (objectAtIndex: 1)。我还能够以相同的方式设置图像,这也适用于按钮一(objectAtIndex:0)和三(objectAtIndex:2)。

【问题讨论】:

【参考方案1】:

将此添加到您的 viewDidLoad: tabBar viewControllers 之一的方法中,它应该可以工作:

- (void)viewDidLoad

    [super viewDidLoad];


    //Get the tabBarItem
    UITabBarItem *tbi = [self tabBarItem];

    //Give it a lable
    [tbi setTitle:@"Title A"];

    //create a image from a file for the tabBar
    UIImage *i = [UIImage imageNamed:@"NiceImage.png"];
    //and put it on the tabBar
    [tbi setImage:i];


【讨论】:

Braintiff,这有效,但是只有在您单击 TabBarItem 后,视图才会加载。在此之前没有图像:( 这很奇怪!我刚刚用一个新项目测试了这段代码,它没有你刚才提到的效果。 等等!解决了,我把那个代码放在第二个Item中,也就是;不是在加载应用程序时加载的项目(和视图),因此它不起作用。然而,将代码放在第一个视图中,让我也可以访问所有其他项目。我会编辑我的问题并详细说明,谢谢:)【参考方案2】:

您应该能够在 TabBarItems 上设置图像和标题属性:

UITabBarItem *item = (UITabBarItem *)[tabBarController.tabBar.items objectAtIndex:0];
item.image = [UIImage imageNamed:@"home.png"];

不要忘记,UITabBar 只使用你设置的图像中的 alpha 值,所以如果你在图像中没有 alpha 通道,你在标签栏项目上设置图像时可能看不到任何东西.

【讨论】:

【参考方案3】:

我从未通过 IB(总是通过代码)创建标签栏,但我使用的是设置标题和图标

controller.title = @"Controller";
controller.tabBarItem.image = [UIImage imageNamed:@"image.png"];

其中controller 是添加到UITabBarControllerviewControllers' 数组中的UIViewController

【讨论】:

从现在开始我将始终在代码中创建它们,所以我不会再遇到这个问题:P 但现在我宁愿解决这个问题,然后在代码中重做。

以上是关于通过代码将标题/图标等设置为在 IB 中创建的 TabBarItem?的主要内容,如果未能解决你的问题,请参考以下文章

带有在 IB 中创建的自定义视图的 InputAccessoryView

在 IB 中创建的静态 UILabel 显示缓慢

为在 PHP 中创建的图像添加边框

我们可以以编程方式更改在 iPhone 中创建的快捷方式的图标和名称吗

在 Interface Builder 中显示在代码中创建的 UIButton

如何更改在 Google App Inventor 中创建的 android 应用程序的图标?