11

estoy teniendo problemas para mostrar la rightBarButtonItem de la barra de navegación - Estoy intentando crear mediante programación en el Delegado de aplicaciones, donde mi UINavigationController está configurado.rightBarButtonItem no aparece en la barra de navegación iOS

Código es el siguiente:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

// Override point for customization after application launch. 
RSCListViewController *list = [[RSCListViewController alloc] initWithStyle:UITableViewStylePlain]; 
self.navController = [[UINavigationController alloc] initWithRootViewController:list]; 

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"+" 
                   style:UIBarButtonItemStylePlain 
                  target:list 
                  action:@selector(addPressed:)]; 

self.navController.navigationItem.rightBarButtonItem = barButton; 

self.window.backgroundColor = [UIColor whiteColor]; 
[self.window makeKeyAndVisible]; 

[DatabaseManager openDatabase]; 

return YES; 
} 

Ejecución de la aplicación, no hay ningún elemento botón aparece en la barra de navegación.

no estoy seguro de si me he perdido algo obvio - mis intentos de solucionar el problema utilizando hilos de desbordamiento de pila relacionados no han dado ningún éxito.

Cualquier ayuda apreciada.

+0

todo lo demás se muestra correctamente? – Kyle

Respuesta

29

Es necesario adjuntar su artículo botón de la barra a su controlador de vista personalizada, no al mando de navegación. De Updating the Navigation Bar:

Además, el objeto controlador de navegación construye el contenido de la barra de navegación dinámicamente utilizando los elementos de navegación (instancias de la clase UINavigationItem) asociados con los controladores de vista sobre la pila de navegación. Para cambiar el contenido de la barra de navegación, , debe configurar los elementos de navegación para su vista personalizada controladores.

(...)

El controlador de navegación actualiza el lado derecho de la barra de navegación de la siguiente manera:

  • Si el nuevo controlador de vista de nivel superior tiene un elemento de botón de la barra de encargo derecha , ese elemento se muestra. Para especificar un elemento de botón personalizado de barra derecha , establezca la propiedad RightBarButtonItem del elemento de navegación del controlador de vista.

  • Si no se especifica ningún elemento botón de la barra de encargo derecha, la barra de navegación muestra nada en el lado derecho de la barra.

Por lo tanto, reemplazar:

self.navController.navigationItem.rightBarButtonItem = barButton; 

con:

list.navigationItem.rightBarButtonItem = barButton; 
+0

Gracias: había asumido que los elementos mostrados en la barra de navegación estaban vinculados al controlador de navegación en lugar de la vista en la parte superior de la pila ... pero ahora que lo pienso, esto no tendría mucho sentido ya que la barra de navegación a menudo cambiará como resultado de la visualización que se está mostrando. Gracias de nuevo por la ayuda. – Russell

+0

Usted es bienvenido :) – albertamg

+0

Por alguna razón que no funciona cuando el VC cuya navigationItem configura rightBarButtonItem es el RootViewController :-(Pero, como usted ha dicho, que funciona bien siempre que el VC con @ navigationItem.rightBarButtonItem = lo que sea," es empujado en la pila de navegación sin embargo. –

Cuestiones relacionadas