通过代码将标题/图标等设置为在 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
是添加到UITabBarController
的viewControllers
' 数组中的UIViewController
。
【讨论】:
从现在开始我将始终在代码中创建它们,所以我不会再遇到这个问题:P 但现在我宁愿解决这个问题,然后在代码中重做。以上是关于通过代码将标题/图标等设置为在 IB 中创建的 TabBarItem?的主要内容,如果未能解决你的问题,请参考以下文章
带有在 IB 中创建的自定义视图的 InputAccessoryView
我们可以以编程方式更改在 iPhone 中创建的快捷方式的图标和名称吗