2009-09-21 15 views

Respuesta

31

La respuesta anterior estuvo cerca, no compiló del todo. Esto es lo que realmente desea:

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 
+0

¿Cómo se puede implementar el método "showInfoView" que usted señaló? – Shawn

+0

Shawn, solo tiene - (nulo) showInfoView: (id) remitente {en cualquier lugar de su implementación. Si no hay: al final del método, no se pasarán argumentos y puede prescindir del remitente: (id). – quantumpotato

0

Debería poder agregar un botón de tipo "Luz de información" al elemento de navegación del controlador de vista que el UINavigationController está mostrando actualmente. Algo como esto podría ir en su código de controlador de vista:

- (void) viewDidLoad { 
    UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    // set your button's target and selector for whatever action here. 
    self.navigationItem.rightBarButtonItem.customView = info; 
} 
+0

Kevlar, modifique su respuesta .. buttonType es una propiedad de solo lectura. ¡No puedes configurarlo! – prakash

+0

mi mal, me estaba yendo de la memoria y no tenía los documentos en frente de mí; cambiando ahora – Kevlar

3

Hay una pérdida de memoria en la respuesta anterior. Deberías usar "liberación automática" para evitarlo. Intenté editar la respuesta pero hasta ahora no había tenido éxito.

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease]; 

ESTA ES LA MANERA CORRECTA DE HACERLO.

+2

La acción correcta no sería editar la respuesta, sino publicar su propia respuesta * con su versión de la solución * o, una vez que tenga 50 reputación, hacer un comentario sobre la respuesta para que el póster pueda corregirla. Los comentarios sin solución que se publican como respuestas probablemente se eliminen. Finalmente, no hay una "respuesta anterior" porque la posición de las respuestas depende de la pestaña de clasificación utilizada para ver la página, los votos y si se acepta o elimina una respuesta. Es mejor referirse a las respuestas o comentarios en la página por el nombre del afiche. –

+0

gracias. ¡No lo sabía! –

0

También puede usar el selector y el objetivo de su elemento de botón de barra actual para su botón de información.

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
self.barButtonItem.customView = infoButton; 

De esta manera, todas las acciones o segues asociados a su elemento de botón de barra se transferirán a su botón de información.

Cuestiones relacionadas