2009-12-22 20 views

Trả lời

69

Nếu viewController của bạn đã có một sư điều khiển thanh tab với nó, bạn chỉ có thể đi sâu vào mục thanh tab và thiết lập huy hiệu, như thế này:

[[[[[self tabBarController] tabBar] items] 
        objectAtIndex:tabIndex] setBadgeValue:badgeValueString]; 

nơi tabIndex là chỉ số của tab mục bạn muốn đặt và huy hiệuValueString là giá trị chuỗi bạn muốn đặt trên tab.

+0

là có một cách tốt hơn để làm điều đó, mà không sử dụng một tabIndex? kể từ khi bộ điều khiển xem được tải sau khi chạm vào một mục tab cụ thể, có thể có một cách ... –

+0

Cảm ơn !! Tiếng Anh> Tiếng Việt!! –

1
 int indexICareAbout = 2; 
     NSString *badgeValue = @"10"; 

     [[[[[self tabBarController] viewControllers] 
     objectAtIndex: indexICareAbout] tabBarItem] setBadgeValue:badgeValue]; 
27

Sử dụng tabBarItem thể hiện của trình điều khiển chế độ xem để truy cập trực tiếp vào mục tab tab thay vì khoan xuống.

[self.tabBarItem setBadgeValue:badgeValue]; 
+0

+1 cho giải pháp đơn giản hơn, giải pháp của Matt hoạt động tốt khi cập nhật giá trị huy hiệu của một tab khác, nhưng giải pháp này là dễ nhất khi cập nhật giá trị tab hiện tại. –

+26

Mẹo: nếu bộ điều khiển chế độ xem của bạn nằm trong bộ điều khiển điều hướng, bạn phải sử dụng '[self.navigationController.tabBarItem setBadgeValue: badgeValue]; ' –

+3

Và đối với những người đang tìm kiếm, ở đây cách bạn xóa nó' [self.tabBarItem setBadgeValue: không];' –

2

Nếu có ba tab trong ứng dụng của bạn First, SecondThird

Tab chỉ số bắt đầu từ 0

First tab index 0 
Second tab index 1 
Third tab index 2 

Nếu bạn muốn đặt giá trị huy hiệu 5 trong tab Second

Vì vậy, vượt qua 1 (chỉ số tab của tab thứ hai) cho objectAtIndex:1 và vượt qua 5 (huy hiệu giá trị) cho setBadgeValue:@"5"

[[self.tabBarController.tabBar.items objectAtIndex:1] setBadgeValue:@"5"]; 

Ngoài ra bạn có thể xóa/gỡ bỏ các giá trị huy hiệu đi qua nil cho tab spacific

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