10

tengo una aplicación que se ejecuta en un UINavigationController. Ahora me gustaría agregar un elemento UIToolbar en la parte inferior de cada pantalla. La barra de herramientas en la parte inferior debe ser personalizable para ViewController que se muestra actualmente. Mi primera idea fue simplemente agregar la barra de herramientas a la vista navigationController y etiquetarla, en viewController pensé que podría recuperar el elemento UIToolbar. Tengo el siguiente código:UIToolbar en cada página del UINavigationController

En mi AppDelegate:

// Get instance of Toolbar (navController is an instance of UINavigationController and TOOLBAR_TAG a constant) 
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 440, 320, 40)]; 
toolbar.tag = TOOLBAR_TAG; 
[navController.view addSubview:toolbar]; 

En mi viewController He intentado esto:

UIToolbar *toolbar = [self.navigationController.view viewWithTag:TOOLBAR_TAG]; 
toolbar.barStyle = UIBarStyleBlack; 

Sin embargo, esto me da un error diciendo que la barra de herramientas en mi caso es un " UILayoutContainerView "objeto, no un objeto UIToolbar. Por lo tanto, esta idea parece ser un callejón sin salida.

¿Cómo a otros a resolver este problema?

Respuesta

40

UINavigationController ya tiene una barra de herramientas. Sólo tiene que utilizar

[self.navigationController setToolbarHidden:NO]; 

en el controlador de vista superior y

[self setToolbarItems:items]; 

en todos sus controladores de vista, donde los artículos es una NSArray de elementos de la barra de ese controlador de vista.

EDIT: cuanto a por qué la solución no está funcionando: su TOOLBAR_TAG probablemente no es única, es por eso que está recibiendo otra vista secundaria. Pero como dije, debes usar la barra de herramientas incluida de todos modos.

+1

Vaya que es un servicio que no me esperaba, incluso buscó la documentación aún no encuentra presente. Muy bueno, gracias! – Robin

+0

de nada. =) está en la documentación de UINavigationController, por cierto: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/occ/instp/UINavigationController/toolbar –

+1

Puede anular su método UINavigationController pushController para evitar copiar/pegar y establecer los elementos de la barra de herramientas aquí. –

1

Para mostrar fácilmente la barra de herramientas inferior UINavigationController, puede hacer clic en la casilla "Mostrar barra de herramientas" que se puede acceder desde el inspector con el objeto "Controlador de navegación" seleccionado. Espero que esto puede ayudar :)

0

Desde una perspectiva de diseño que no recomendaría esto a menos que sepa la barra de herramientas estará presente para cada vista de la pila. En el momento en que comiences a ocultar/mostrar la barra de herramientas para diferentes vistas en la pila, verás que esa animación (la barra de herramientas se desliza hacia fuera con vistas) no se anima como esperas.

Si necesita barras de herramientas para puntos de vista específicos los pusieron en esos puntos de vista, desde la barra de herramientas son contextuales a la vista, no a la pila de navegación en su conjunto.

Cuestiones relacionadas