2011-12-17 50 views
1

按照蘋果docs的iOS 5:UITabBarItem setFinishedSelectedImage:withFinishedUnselectedImage:不工作/忽略

我想定製完所選設置和未選中的圖像上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 +

的圖像是30×30的透明PNG圖像,並在項目中存在。無法弄清楚我在這裏忽略了什麼,但必須是一些東西!

這是被稱爲在tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法,ALA雷Wenderlich的tutorial

人有什麼想法?

謝謝!

+0

注:setFinishedSelectedImage:withFinishedUnselectedImage:需要iOS 5. – taber 2011-12-20 05:49:15

回答

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"]]; 
+0

哎呀,我知道我錯過了那樣簡單的事情 - 非常感謝! – taber 2011-12-18 01:42:07

+0

此方法已棄用。 – Ryuk 2015-10-27 05:22:57

2

如果您試圖在UITabBar中實現顯示實際圖像,請使用以下代碼。

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

,如果你想在原來的條件,以顯示圖像的選擇然後使用以下

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

這兩個是替代

setFinishedSelectedImage: withFinishedUnselectedImage: