2010-11-22 15 views
8

Estoy programando la adición de UINavigationBar a una UIView, y ahora necesito agregarle un UIBarButtonItem. Estoy tratando de utilizar los siguientes:No se puede agregar UIBarButtonItem a UINavigationBar independiente

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissView)]; 
[header setItems:[NSArray arrayWithObjects:doneButton, nil] animated:NO]; 
[doneButton release]; 

mi aplicación se bloquea y me encuentro con esto en la consola:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBarButtonItem setNavigationBar:]: unrecognized selector sent to instance 0x4b75c00'

agradecería que alguien podría por favor, señalar qué estoy haciendo mal aquí .

Gracias. Ricky.

Respuesta

16

UINavigationBar acepta una matriz de UINavigationItem objetos, cada uno de los cuales contiene propiedades sobre un nivel dado de la jerarquía de navegación. Probablemente desee crear un nuevo UINavigationItem y luego establecer su propiedad rightBarButtonItem en su botón Hecho.

+0

¡Muchísimas gracias por eso! –

+0

Todavía funciona perfectamente con iOS 7 ¡gracias! – user3344977

4

Es poco probable que necesite crear un nuevo UINavigationItem como lo indica la respuesta actual. Por el contrario, si ya tiene un UINavigationBar inicializado desde una punta que también contiene una vista, puede simplemente agregar su UINavigationItem a la propiedad topItem de su UINavigationBar. Algo como esto:

UIBarButtonItem *closeBtn = [[UIBarButtonItem alloc] initWithTitle:@"Close" 
                  style:UIBarButtonItemStyleBordered 
                  target:self 
                  action:@selector(closeBtnPressed)]; 
self.navigationBar.topItem.leftBarButtonItem = closeBtn; 
[closeBtn release]; 
Cuestiones relacionadas