2011-12-17 24 views
6

Tengo una aplicación en la tienda de aplicaciones en la que estoy usando análisis de Flurry. Y sigo recibiendo un error de excepción no controlada de vez en cuando que no puedo descifrar.Selector no reconocido enviado en UIBarButtonItem setTintColor

NSInvalidArgumentException: - [UIBarButtonItem setTintColor:]: Selector no reconocido enviado a la instancia 0x177b20 de error: La aplicación se estrelló

Lo que no puedo entender es que soy no establecer ningún artículo en su botón de la barra colorear el tinte en cualquier lugar. Tengo algunas vistas personalizadas en las que estoy configurando el elemento del botón de la barra derecha, pero no el tinte.

La mayoría de mis usos del botón se ven así.

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

} 

Si alguien tiene alguna idea sobre este tema, estaría muy agradecido. Me estoy enfocando en iOS 4.0 y en mi proyecto.

ACTUALIZACIÓN: me di cuenta de lo que estaba causando algunos de los temas al azar en el setTintColor. Descubrí que estaba configurando el color del tinte en uno de los elementos reales del botón de la barra. Supongo que hay algunas diferencias entre las versiones del sistema operativo que pueden causar bloqueos. Entonces, si alguien puede decirme una forma neutral del sistema operativo de configurar un elemento de botón de barra derecha personalizado en mi barra de navegación, sería de agradecer.

+1

He tenido algunos problemas con el recientemente. A veces, solo tiene que llamar a setTintColor en las subvistas de NavigationController. ([[[auto.navigationController.navigationBar subviews] objectAtIndex: 1] setTintColor: [UIColor redColor]];) Al menos eso lo solucionó para mí. – CodaFi

Respuesta

7

El problema fue con el uso de errante -setTintColor en 2 clases. -setTintColor no es compatible con los dispositivos 4.x, por lo que se bloqueará cuando los dispositivos más antiguos choquen con el color del tinte.

+0

También encontré que 'TintColor' no es compatible con IOS 5.0 y versiones posteriores para un' MPVolumeView'. – ForceMagic

3

Ha intentado:

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

?

+0

Suena más como un comentario que como una respuesta. – Till

+0

No. Parece que no puedo reproducir el problema en el simulador o en mi dispositivo. Voy a probar esto y dejarte saber. –

1

si su objetivo es iOS 4.0 se puede hacer esto: En su AppDelegate.m al final después de @end poner este código:

@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 

Esperanza esta ayuda. Para mí es trabajo

Cuestiones relacionadas