2012-06-30 26 views
7

Estoy tratando de establecer una imagen para mi UIBarButtonItem y no puedo lograrlo. Lo intenté dos veces, y en el primer caso obtuve mi imagen en el lugar correcto, pero cuando hago clic en el botón no sucede nada (debería aparecer una nueva ventana, pero nada funciona). Existe la pieza de código que he utilizado:No puedo establecer la imagen para UIBarButtonItem

UIImage *faceImage = [UIImage imageNamed:@"plus_button.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[[UIBarButtonItem alloc] initWithCustomView:face]initWithImage:faceImage style:UIBarButtonItemStylePlain target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = faceBtn; 

En segundo caso, me puse la imagen en el botón y la nueva ventana aparece como debe ser, pero no es sólo mi imagen personalizada que quiero, sino que también muestran "bordes", parece que la imagen se colocó en el centro del botón predeterminado. Obviamente, solo quiero mi imagen, no las fronteras, solo mi imagen. No es una pieza de código que se han utilizado en el segundo caso:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style:UIBarStyleDefault target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

me puede ayudar a resolver el problema, cualquier ayuda se agradece, gracias!

Respuesta

8

probar esto ... cambiar su método, de acuerdo con la imagen que

UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom]; 
[button1 setFrame:CGRectMake(10.0, 2.0, 45.0, 40.0)]; 
[button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside]; 
[button1 setImage:[UIImage imageNamed:@"left-arrow-button.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1]; 
self.navigationItem.leftBarButtonItem = button; 
+0

barButtonItemClass es el identificador no declarado :( –

+0

¡oh! Lo escribí por error ... ahora he editado, por favor, compruebe it :-) – TheTiger

+0

¿está funcionando para usted? – TheTiger

3

He modificado su código y probado la imagen que se muestra en la barra. Por favor, intente esto usted mismo. Y, por favor, avíseme si tiene algún problema con esto.

UIImage *faceImage = [UIImage imageNamed:@"Badge.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face addTarget:self action:@selector(showAlerts) forControlEvents:UIControlEventTouchUpInside]; 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];  
    self.navigationItem.leftBarButtonItem = faceBtn; 

EDIT: He agregado una línea en mi respuesta. Acabo de imprimir un mensaje "Hola" en el registro. está funcionando. ¿Puedes intentarlo?

Gracias.

+0

Yuvaraj i muy apreciado lo que hizo, pero quiero que mencionar que solía "acción: @selector (addProduct :)" para llamar a mi segunda ventana. Obviamente no se llama –

+0

@EvgeniyKleban Por favor, intente con mi respuesta editada. Gracias. –

+0

¡Yuvaraj.M agradece todo lo que está funcionando! Acabo de recibir 2 respuestas correctas de usted y del tipo que aparece a continuación, ¡estoy tan feliz de haber resuelto este problema! Por favor acepta mis mejores deseos! :) –

1
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style: UIButtonTypeCustom target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

u creaban un botón por defecto, es necesario crear un botón UIButtonTypeCustom tipo ...

+0

Gracias, entiendo esto, pero no puedo resolver las cosas :) –

0

Swift versión de la respuesta aceptada para cualquier persona

var settingsButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
settingsButton.frame = CGRect(origin: CGPointZero, size: CGSize(width: 36, height: 36)) 
settingsButton.setImage(image, forState: UIControlState.Normal) 
settingsButton.addTarget(self, action: "buttonActionHere:", forControlEvents: UIControlEvents.TouchUpInside) 

let rightBarButtonItem = UIBarButtonItem(customView: settingsButton) 
navigationItem.setRightBarButtonItem(rightBarButtonItem, animated: true) 
3

O ... simplemente escriba dos líneas de iOS 8 Swift code. (Incluso podría trabajar en iOS 7)

let doneButtonAsLeftArrow = UIBarButtonItem(image: UIImage(named: "LeftArrow24x24.png"), style: .Plain, target: self, action: "doneButtonPushed") 
    navigationItem.leftBarButtonItem = doneButtonAsLeftArrow 
+0

Esta debería ser la respuesta aceptada. – reinaldoluckman

Cuestiones relacionadas