2011-12-17 21 views
6

Tôi có một ứng dụng trong cửa hàng ứng dụng mà tôi đang sử dụng phân tích Flurry trên đó. Và tôi tiếp tục nhận được một lỗi ngoại lệ unhandled theo thời gian mà tôi không thể tìm ra.Bộ chọn không được nhận dạng được gửi trên UIBarButtonItem setTintColor

NSInvalidArgumentException: - [UIBarButtonItem setTintColor:]: chọn không được công nhận gửi đến dụ 0x177b20 Msg: Ứng dụng bị rơi

Những gì tôi không thể tìm ra là, tôi không thiết lập bất kỳ mặt hàng nút thanh màu sắc tint bất cứ nơi nào. Tôi có một vài chế độ xem tùy chỉnh trong đó tôi đang đặt mục nút thanh bên phải nhưng không có màu.

Hầu hết việc sử dụng nút của tôi trông giống như thế này.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UINavigationBar *bar = [self.navigationController navigationBar]; 
    [bar setTintColor:[UIColor colorWithRed:0 green:69.0/255 blue:118.0/255 alpha:1]]; 
    self.navigationItem.title = @"Edit User"; 

    UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] 
            initWithTitle:@"Save" 
            style:UIBarButtonItemStylePlain 
            target:self 
            action:@selector(editUser:)]; 
    self.navigationItem.rightBarButtonItem = saveButton; 
    [saveButton release]; 

    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] 
            initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
            target:self 
            action:@selector(cancel)]; 

    [[self navigationItem] setLeftBarButtonItem:cancelButton]; 
    [cancelButton release]; 

} 

Nếu có ai có bất kỳ thông tin chi tiết nào về vấn đề này, tôi sẽ rất biết ơn. Tôi đang nhắm mục tiêu iOS 4.0 trở lên trong dự án của mình.

CẬP NHẬT: Tôi đã tìm ra nguyên nhân gây ra một số vấn đề ngẫu nhiên trên setTintColor. Tôi thấy rằng tôi đã thiết lập màu tint trên một trong các mục nút thanh thực tế. Tôi đoán có một số khác biệt giữa các phiên bản hệ điều hành có thể gây ra sự cố. Vì vậy, nếu bất cứ ai có thể cho tôi biết một cách trung lập hệ điều hành của thiết lập một mục nút thanh tùy chỉnh bên phải trong thanh điều hướng của tôi, nó sẽ được đánh giá cao.

+1

Tôi đã gặp một số sự cố với thời gian gần đây. Đôi khi, bạn phải chỉ cần gọi setTintColor trên các bản xem trước của NavigationController. ([[[self.navigationController.navigationBar subviews] objectAtIndex: 1] setTintColor: [UIColor redColor]];) Ít nhất nó đã sửa nó cho tôi. – CodaFi

Trả lời

7

Vấn đề là với errant -setTintColor sử dụng trên 2 lớp. -setTintColor không được hỗ trợ trên các thiết bị 4.x, vì vậy bạn sẽ gặp sự cố khi các thiết bị cũ gặp phải màu sắc màu.

+0

Tôi cũng thấy rằng 'TintColor' không được hỗ trợ trên IOS 5.0 trở xuống cho' MPVolumeView'. – ForceMagic

3

Các bạn đã thử:

self.navigationController.navigationBar.tintColor =[UIColor colorWithRed:0 green:69.0/255 blue:118.0/255 alpha:1]; 

?

+0

Nghe có vẻ giống như một bình luận hơn là một câu trả lời. – Till

+0

Không. Tôi dường như không thể sao chép sự cố trong trình mô phỏng hoặc trên thiết bị của tôi. Tôi sẽ thử điều này và cho bạn biết. –

1

nếu mục tiêu của bạn là iOS 4.0 bạn có thể làm điều này: Trong AppDelegate.m của bạn cuối cùng sau khi @end đặt mã này:

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
    UIColor *color = [UIColor YOUR_COLOR]; 
    self.tintColor = color; 
     //if you want image for background use this code 
    UIImage *img = [UIImage imageNamed: @"IMAGE_NAME.png"]; 
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 

@end 

Hope trợ giúp này. Đối với tôi đó là công việc.

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