2010-08-11 33 views

Trả lời

11

Chỉ tìm thấy giải pháp của tôi. Về cơ bản, tôi subclassed UITabItem và thiết lập này trong điều khiển chuyển hướng:

-(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;    
} 

Đây là những gì lớp CustomTabBarItem trông giống như:

@interface CustomTabBarItem : UITabBarItem 
{ 
    UIImage *customHighlightedImage; 
} 

@property (nonatomic, retain) UIImage *customHighlightedImage; 

@end 

thực hiện:

#import "CustomTabBarItem.h 

@implementation CustomTabBarItem 

@synthesize customHighlightedImage; 

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

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

@end 
+0

customHighlightedImage là gì? Bạn đã đặt gì trong lớp CustomTabBarItem? –

+0

chỉ cần thêm thông tin chi tiết về những gì CustomTabBarItem trông giống như – Frank

+0

phương pháp nào cho hình ảnh không được chọn xin vui lòng? – Tiago

2

này không được hỗ trợ chính thức trong SDK. Bạn có thể thăm dò và điều chỉnh chế độ xem của tab trong thời gian chạy, nhưng bạn có nguy cơ bị từ chối từ Apple.

Chỉnh sửa: Để hoàn thành, tôi nên đề cập rằng tùy chọn khác của bạn là cuộn UITabBar của riêng bạn.

2

Chỉ cần thêm một số chế độ xem tùy chỉnh (sử dụng insertSubview: atIndex :) khi các phương thức đại biểu UITabBarController được gọi.

Ví dụ:

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

Bạn có thể thử thay đổi someIndex mình cho đến khi bạn có kết quả bạn muốn.

+0

này là tốt vì nó dễ dàng để thực hiện và nó không sử dụng bất kỳ phương pháp tư nhân, do đó sẽ không có vấn đề về ứng dụng ôn tập. –

1

Đối với iOS5 trở lên, bạn chỉ có thể làm điều này:

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

Màu thiết lập màu đó của tất cả hình ảnh. Tôi chỉ muốn một tabbar. Tôi sẽ làm như thế nào? –

1

Tôi tin rằng bây giờ bạn có thể làm điều này với:

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

'setFinishedSelectedImage: withFinishedUnselectedImage:' là một phương thức 'UITabBarItem', không phải' UITabBar'. – azdev

+0

@azdev cổ vũ vừa phát hành sai lầm của tôi. – Popeye

0

Trong AppDelegate.m

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

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

return YES; 

} 

này sẽ cung cấp cho bạn một màu đỏ, thay đổi màu sắc với một trong những bạn muốn whiteColor, blueColor, vv .

6

trong iOS 6 tôi có thay đổi hình ảnh tabbatitem chọn như -

trong điều khiển thanh tabbar phương pháp đại biểu

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

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

thông qua việc này, bạn có thể thay đổi hình ảnh của mình.

Hoặc bạn có thể sử dụng trực tiếp trong quan điểm điều khiển của bạn init phương pháp (hoặc viewWillAppear), như

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

tôi hy vọng điều này sẽ giúp bạn.

+1

Tác phẩm này tuyệt vời, ngoại trừ hình ảnh đã chọn không được đặt cho đến khi tab được chọn (đối với tôi tab đầu tiên vẫn là màu xanh dương ban đầu). Lặp lại thông qua self.viewControllers trong viewDidLoad trong UITabBarController của tôi đã thực hiện thủ thuật. – Dustin

+0

Tôi cũng đang gặp phải vấn đề tương tự như Dustin. Vui lòng cho tôi biết cách chúng tôi có thể hiển thị hình ảnh đã chọn hoặc không được chọn mà không chọn tab theo cách thủ công. –

+0

Tôi không chắc chắn nhưng bạn có thể thử dòng mã này. : - [tabBar setSelectedItem: [tabBar.items objectAtIndex: 0]]; –

1

Khi sử dụng bảng phân cảnh, bạn có thể chỉ cần chọn TabBar của TabBarController và sau đó thay đổi Màu ảnh trong Trình kiểm tra nhận dạng. Điều này cũng sẽ làm việc với XIB.

Look here for an image describing the todos

0

Trong tôi UITabBarController viewDidLoad:, dựa trên Rizzu của câu trả lời:

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

Xin chào Dustin. Hình ảnh của tôi trên UITabBarItem không được đặt cho đến khi tôi chọn UITabBarItem yêu cầu theo cách thủ công. Nếu bạn giải quyết vấn đề này, sau đó cho tôi một số gợi ý cho điều này. Nếu có thể, vui lòng cung cấp mã cho tôi. –

Các vấn đề liên quan