iOS 5:UITabBarItem setFinishedSelectedImage:withFinishedUnselectedImage:不工作/忽略

按照苹果文档

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

... 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 +

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

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

有人有主意吗?

谢谢!

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

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

你应该用initWithTitle:image: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"]]; 

如果你正试图在UITabBar上显示实际的图像,那么使用下面的代码。

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

如果要以所选的原始状态显示图像,请使用以下内容

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

这两个是替代

 setFinishedSelectedImage: withFinishedUnselectedImage: