2010-08-11 44 views

回答

11

剛剛找到我的解決方案。基本上,我子類UITabItem和導航控制器設置這樣的:

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    CustomTabBarItem *tabItem = [[CustomTabBarItem alloc] initWithTitle:@"Events" image:[UIImage imageNamed:@"tabIcon.png"] tag:0]; 
    tabItem.customHighlightedImage=[UIImage imageNamed:@"tabIconSelected.png"]; 
    self.tabBarItem = tabItem; 
    [tabItem release]; 
    tabItem=nil;    
} 

這裏的CustomTabBarItem類的樣子:

@interface CustomTabBarItem : UITabBarItem 
{ 
    UIImage *customHighlightedImage; 
} 

@property (nonatomic, retain) UIImage *customHighlightedImage; 

@end 

實現:

#import "CustomTabBarItem.h 

@implementation CustomTabBarItem 

@synthesize customHighlightedImage; 

- (void)dealloc { 
    [customHighlightedImage release]; 
    customHighlightedImage=nil; 
    [super dealloc]; 
} 

-(UIImage *)selectedImage { 
    return self.customHighlightedImage; 
} 

@end 
+0

什麼是customHighlightedImage?你在CustomTabBarItem類中放了什麼? –

+0

只是在CustomTabBarItem的外觀上添加了更多細節 – Frank

+0

請問未選取圖片的方法是什麼? – Tiago

2

這不是正式的SDK支持。您可能能夠在運行時探測並調整標籤的視圖,但是您可能會拒絕Apple。

編輯:爲了完整起見,我應該提到您的其他選擇是推出自己的UITabBar。

2

當調用UITabBarController-delegate-methods時,只需添加一些自定義視圖(使用insertSubview:atIndex :)即可。

例子:

– (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    [tabBarController.tabBar insertSubview:someView atIndex:someIndex]; 
} 

你可以試着改變自己someIndex,直到你有你想要的結果。

+0

這是好事,因爲它很容易實現,它不使用任何私有方法,因此不會對應用程序沒有問題評論。 –

1

對於iOS5的向上,你可以這樣做:

rootTabBarController.tabBar.selectedImageTintColor = [UIColor greenColor]; 
+0

設置所有圖像的色調顏色。我只想要一個tabbar。我會怎麼做? –

1

我相信你現在可以做到這一點:

[[[[self tabBar] items] objectAtIndex:0] setFinishedSelectedImage:nil withFinishedUnselectedImage:nil]; 
+0

'setFinishedSelectedImage:withFinishedUnselectedImage:'是'UITabBarItem'的方法,而不是'UITabBar'。 – azdev

+0

@azdev乾杯剛剛釋放我的錯誤。 – Popeye

0

在AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions { 

[[UITabBar appearance] setSelectedImageTintColor:[UIColor redColor]]; 

return YES; 

} 

這會給你一個紅色,改變你想whiteColor,blueColor等一個顏色。

6

在iOS 6中我有改變等所選擇的圖像tabbatitem -

在的TabBar控制器委託方法

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 

{ 
    if([tabBarController selectedIndex] == 0) 
    { 
     [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]]; 
    }  
} 

通過這個,您可以改變您的圖像。

或者你可以在你的視圖控制器的init(或viewWillAppear中)的方法直接使用,如

 [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"selected.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"unselect.png"]]; 

我希望這會幫助你的。

+1

這個效果很好,除非所選圖像在選擇標籤前沒有設置(對於我來說第一個標籤最初仍然是藍色)。然而,在我的UITabBarController中通過viewDidLoad中的self.viewControllers迭代了這個技巧。 – Dustin

+0

我也面臨與達斯汀相同的問題。請讓我知道我們如何顯示選擇或未選擇的圖像,而無需手動選擇選項卡。 –

+0

我不知道,但你可以嘗試這一行代碼。 : - [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]]; –

0

在我的UITabBarController的viewDidLoad:,基於Rizzu的回答是:

for (int i = 0; i < [self.viewControllers count]; i++) 
{ 
    UIViewController* viewController = [self.viewControllers objectAtIndex:i]; 

    if(i == 0) 
    { 
     [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_list_all_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_list_all.png"]]; 
    } 
    else if(i == 1) 
    { 
     [viewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"btn_settings_hover.png"]withFinishedUnselectedImage:[UIImage imageNamed:@"btn_settings.png"]]; 
    } 
} 
+0

嗨達斯汀。在我手動選擇所需的UITabBarItem之前,UITabBarItem上的圖像未設置。如果你解決了這個問題,那就給我一些提示。如果可能的話,請給我提供代碼。 –

相關問題