2009-11-24 18 views
10

Por lo tanto, inmediatamente después de empujar un controlador de vista a mi tableView,¿Cómo agrego un botón al lado derecho de mi navigationController después de presionar otro controlador de vista?

 
// Override to support row selection in the table view. 
- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Navigation logic may go here -- 
    // for example, create and push another view controller. 
    AnotherViewController *anotherViewController = 
     [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 
    [self.navigationController pushViewController:anotherViewController animated:YES]; 

Ok, por lo que hace otra vista de diapositivas, y usted puede volver a la vista anterior ("pop" la visión actual) haciendo clic el botón que automáticamente aparece en la esquina superior izquierda de la barra de navegación ahora.

Ok, así que DIGA Quiero llenar el LADO DERECHO de la barra de navegación con un botón HECHO, como en la aplicación "Notas" que viene con el iPhone. ¿Como podría hacerlo?

me trataron código como este:

 
    UIBarButtonItem * doneButton = 
    [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
    target:self 
    action:@selector(doneFunc) ]; 

    self.navigationController.navigationItem.rightBarButtonItem = doneButton ; // not it.. 

    [doneButton release] ; 

doneFunc se define, y todo, simplemente el botón nunca aparece en el lado derecho ..

Respuesta

11

AH. Tienes que hacer:

 
- (void)tableView:(UITableView *)tableView 
     didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    AnotherViewController *anotherViewController = 
     [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; 
    [self.navigationController pushViewController:anotherViewController animated:YES]; 


    UIBarButtonItem * doneButton = 
    [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
    target:self 
    action:@selector(doneFunc) ]; 

    anotherViewController.navigationItem.rightBarButtonItem = doneButton ; 

    [doneButton release] ; 
} 

Who'da thunk it.

+14

Deberías haber aceptado la respuesta de Thomas en lugar de la tuya. – titaniumdecoy

30

El código que envió debería funcionar bien, creo. La pregunta es, ¿dónde lo pones? Lo pondría en el método -viewDidLoad del controlador de vista al que está presionando. Si necesita botones diferentes según el contenido que muestra, puede hacerlo en el método -viewWillAppear:.

actualización: En realidad, creo que es necesario cambiar

self.navigationController.navigationItem.rightBarButtonItem = doneButton; 

a

self.navigationItem.rightBarButtonItem = doneButton; 
+0

No, lo intenté ... pero fue útil. Lo moví a viewDidAppear. Parece que el problema es que el botón derecho obtiene _HIDDEN_ cada vez que se empuja un nuevo controlador de vista encima de la pila – bobobobo

+0

He actualizado mi respuesta. Creo que hay un error en tu código. Avíseme si esto lo soluciona. –

+0

No, lo intenté, pero elBarButtonItem correcto todavía __desaparece__ una vez que se empuja el nuevo controlador de vista. – bobobobo

Cuestiones relacionadas