iOS 5:UITabBarItem setFinishedSelectedImage:withFinishedUnselectedImage:not working / ignored

时间:2011-12-17 20:18:30

标签: iphone ios ios5 uitabbar uitabbaritem

根据Apple docs

我正在尝试在UITabBarItem上设置自定义已完成的已选择和未选择的图像,如下所示:


...
DetailViewController *vc1 = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
UITabBarItem *vc1i = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemTopRated tag:100];
[vc1i setFinishedSelectedImage:[UIImage imageNamed:@"tab_bar_item_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_bar_item_normal.png"]];
[vc1 setTabBarItem:vc1i];
...

基本上发生的事情是TabBar加载得很好,它只是完全忽略了标签栏项目的自定义。

我的目标是iOS5 +

图像是30x30透明PNG并存在于项目中。无法弄清楚我在这里忽略了什么,但一定是什么东西!

这是在tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法中调用的,ala Ray Wenderlich的tutorial

有人有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

标签栏项目使用以下方法初始化:initWithTabBarSystemItem:tag:。但是,正如文件所说:

  

此方法返回系统提供的标签栏项。以后不能更改返回项目的标题和图像属性。

您应该使用initWithTitle:image:tag:初始化标签栏项目。

UITabBarItem *vc1i = [[UITabBarItem alloc] initWithTitle:@"Top Rated" image:nil tag:100];
[vc1i setFinishedSelectedImage:[UIImage imageNamed:@"tab_bar_item_selected.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_bar_item_normal.png"]];

答案 1 :(得分:2)

如果您正试图在UITabBar上显示实际图像,请使用以下代码。

[yourTabBarItem setImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

如果您想以原始状态显示所选图像,请使用以下

[yourTabBarItem setSelectedImage:[[UIImage imageNamed:@"more.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

这两个是

的替代品
setFinishedSelectedImage:  withFinishedUnselectedImage: