He creado mediante programación algunos UINavigationControllers y se agrega a un UITabBarController. Todo parece funcionar bien, pero yo quería añadir un botón «cancelar» para el controlador de navegación, pero nunca se muestra. He intentado varias formas pero me parece que no puede afectar a la visualización de los elementos de navegación en todo y he seguido varios ejemplos de aquí y de otros sitios, pero no pasa nada.

MyTableViewController *mtvc = [[MyTableViewController alloc] init]; 
UINavigationController *myNavController = [[[UINavigationController alloc] initWithRootViewController:mtvc] autorelease];
myNavController.navigationBar.barStyle = UIBarStyleBlackOpaque;  //this works
[mtvc release];

//TODO: figure out why added buttons aren't showing
UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease]; 
myNavController.navigationItem.leftBarButtonItem = closeButton;  //never shows up

También probé agregando el botón de esta manera

[myNavController.navigationItem setLeftBarButtonItem:closeButton animated:NO];  //also doesn't do anything

Empecé frustrado así que también he probado algunas otras cosas sólo para ver si podía afecta en nada, pero fue en vano

myNavController.title = @"test";  //does nothing

He intentado hacerlo antes y después de las navegaciones de los controladores se han añadido a la UITabBarController y eso no ayuda.
También he intentado rightBarButtonItem y trató de usar initWithTitle: en lugar de initWithBarButtonSystemItem.

Alguien por favor me ilumine? Claramente, voy a hacer esto de la manera equivocada.

OriginalEl autor digarok | 2011-02-21

3 Comentarios

  1. 16

    Trate de añadir los botones de la barra en la loadView método de MyTableViewController como las siguientes.

    UIBarButtonItem *closeButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(shutDown)] autorelease]; 
    self.navigationItem.leftBarButtonItem = closeButton;

    Supongo que debería funcionar.

    Que hizo @Simon . Gracias! Tuve la sensación de que necesitaba hacer esto desde dentro de la vista correspondiente controlador. Yo había tratado de hacer esto antes en el init método que hace que la sensación de que no iba a funcionar. Haciendo dentro de la loadView método ha funcionado como un campeón.
    Nota: no le gustaba a mi el uso de autorelease seguido por una explícita release. Debe ser, probablemente, uno o el otro.
    Sí.. lo Siento.. Ese es mi error.. no me di cuenta de que el grupo de liberación automática allí..
    +1 para la respuesta correcta @digarok,ese chico no incluyen el auto.

    OriginalEl autor EmptyStack

  2. 4

    Has probado a seleccionar el botón de la vista actual del controlador de elementos de navegación como este:

    mtvc.navigationItem.leftBarButtonItem = closeButton;

    OriginalEl autor gerry3

  3. 2

    Si usted necesita para hacer que en Swift 3.0, es tan simple como que:

    let closeButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel,
                            target: self,
                            action: #selector({Your-viewController}.{close-method}))
    self.navigationItem.leftBarButtonItem = closeButton

    OriginalEl autor Abner Terribili

Dejar respuesta

Please enter your comment!
Please enter your name here