Quiero una pila de navegación global. Cuando el usuario cambia de pestaña o navega a una nueva vista en la misma pestaña, quiero insertar la nueva vista en la pila de navegación global. Quiero que el botón Atrás en la barra de navegación vuelva a la vista anterior, que a veces es una pestaña diferente, y a veces una vista diferente en la misma pestaña.¿Cómo puedo crear una pila de navegación global?
Respuesta
que podría lograr el mismo ajustando el botón de la barra izquierda de su UINavigationController
que el botón de su elección, Manejar el método de acción e invocar el botón de barra de pestañas apropiado en caso de clic.
Es necesario hacer todo lo que en su controlador de vista raíz ...
añadido:
No se podía conseguir el botón Atrás de los controladores de vista de la raíz (controladores de navegación; s vista raíz asociado con su instancia de barra de pestañas) simplemente presionando el botón de la barra de pestañas.
necesita encontrar la manera de lograr esto ya que no está obteniendo esto de iOS Entonces el movimiento que presiona el botón tabbar su necesidad de tener la variable que almacena el índice seleccionado previamente y un método que da la información para cualquier tabbar simplemente pasando el índice ... Entonces, al usar estos dos, puede establecer el título del botón de barra izquierda de la barra de navegación y regresar a la pestaña anterior asignando el método de acción apropiado al botón de la barra izquierda ...
No entendí a qué se refiere? –
@ZiadTamim: vea la respuesta actualizada. – Jhaliya
Para lograr este efecto, puede deshacerse del UITabBarController y emular la barra mediante una vista personalizada o personalizando la UIToolbar estándar.
Tenga un controlador de navegación con, con su barra de herramientas personalizada siempre visible, y cuando los botones se tocan sobre él, simplemente presione las vistas que desee en el puerto de navegación.
Sí, es el comportamiento predeterminado estándar –
Erm ... ¿con qué tiene problemas exactamente? –
Quiero que todos los controles UIViewController en el UITabBarController se carguen en el mismo UINavigationController –
¿Desea que todos los UIViewController
's en el UITabBarController
se carguen en el mismo UINavigationController
?
Así que algo como esto:
___ RootViewController ___
| |
UINavigationController UITabBarViewController
en lugar de
RootViewController
|
_________ UITabbarViewController _____________________
| | |
UINavigationController UINavigationController UINavigationController
Usted debe tratar de "experimentar" con su propia costumbre UITabBar
¿Hay algún tutorial o algo útil (guía ...) que pueda ayudarme a hacer eso? –
Puede crear su propia "barra de pestañas", que no es más que un grupo de botones con el estado "seleccionado" deseado. Hago esto todo el tiempo, porque "no me gusta" la interfaz de usuario predeterminada de la barra de pestañas. – basvk
Pero si quiero presentar un controlador de vista modal, el UITabBar no estará oculto ... –
que sugieren que cree una matriz global (NSMutableArray) que contendrá objetos NSInvocation. Por lo tanto, cada vez que presiona el controlador de vista, debe crear NSInvocation con el controlador de navegación como destino y popViewConrollerAnimated:
como selector. Si toca el elemento de la barra de pestañas, debe configurar el controlador de la barra de pestañas como destino y setSelectedViewController:
como selector. También debe especificar controlador de vista actual como parámetro utilizando
- (void)setArgument:(void *)buffer atIndex:(NSInteger)index
Entonces, cada vez que el pop su pila mundial que necesita sólo llamar [myLastInvocation invoke]
;
Tuve un problema similar.Lo hice así:
Para cambiar la pestaña, utilice: diga, quiere ir a la pestaña 2 y su tercera controlador de vista
self.tabBarController.selectedIndex = 2;
[self.tabBarController.delegate tabBarController:self.tabBarController didSelectViewController:
[[[self.tabBarController.viewControllers objectAtIndex:2] viewControllers] objectAtIndex:3]];
¿Puede explicar más su idea, por favor? :) –
Lo tengo trabajo. En mi experiencia, necesitaba tener mainTabBarController
y detailedNavigationController
como dos controladores raíz. Estos dos métodos de UIApplicationDelegate
clase de trabajo perfecto:
- (void) showDetailedTab
{
CGRect normalRect = self.window.bounds;
CGRect rightRect = CGRectOffset(normalRect, normalRect.size.width, 0);
CGRect leftRect = CGRectOffset(normalRect, -normalRect.size.width, 0);
detailedNavigationController.view.frame = rightRect;
mainTabBarController.view.frame = normalRect;
[self.window addSubview:mainTabBarController.view];
[self.window addSubview:detailedNavigationController.view];
[UIView animateWithDuration:0.35 delay:0.0 options:UIViewAnimationCurveEaseOut
animations: ^{
detailedNavigationController.view.frame = normalRect;
mainTabBarController.view.frame = leftRect;
}
completion: ^(BOOL finished){
[mainTabBarController.view removeFromSuperview];
}];
}
- (void) showMainTabBar
{
CGRect normalRect = self.window.bounds;
CGRect rightRect = CGRectOffset(normalRect, normalRect.size.width, 0);
CGRect leftRect = CGRectOffset(normalRect, -normalRect.size.width, 0);
mainTabBarController.view.frame = leftRect;
detailedNavigationController.view.frame = normalRect;
[self.window addSubview:mainTabBarController.view];
[self.window addSubview:detailedNavigationController.view];
[UIView animateWithDuration:0.35 delay:0.0 options:UIViewAnimationCurveEaseOut
animations: ^{
mainTabBarController.view.frame = normalRect;
detailedNavigationController.view.frame = rightRect;
}
completion: ^(BOOL finished){
[detailedNavigationController.view removeFromSuperview];
}];
}
creo que esta solución es mejor que la emulación de la barra de pestañas, ya que no se rompa el ciclo de vida UIViewContoller
's.
- 1. eliminar una página de navegación Pila
- 2. Crear una navegación numérica
- 3. ¿Puedo crear crear una función global en SQL Server?
- 4. Cómo puedo eliminar una vista del controlador de navegación
- 5. Cómo crear enum global
- 6. ¿Puedo crear .resx global sin idioma?
- 7. ¿cómo podría crear una clase de notificación global?
- 8. ¿Cómo definir una pila de pila?
- 9. cómo puedo crear un objeto global singleton en rieles
- 10. pushd popd pila de directorio global?
- 11. ¿Cómo puedo generar una navegación en Middleman?
- 12. Crear una pila de tamaño fijo
- 13. ¿Cómo crear un archivo de configuración global?
- 14. ¿Cómo puedo crear un manejador de excepción global en una DLL?
- 15. ¿Cómo puedo mostrar una barra de pestañas cuando se empuja un UIViewController en la pila de navegación
- 16. Cómo crear variable global en el prólogo
- 17. UINavigationController problemas de la pila de navegación en modo horizontal
- 18. Cómo crear una variable global con Play Framework 2.0
- 19. Cómo recibir una alerta cuando uiviewcontroller es empujado/extraído de la pila de navegación
- 20. ¿Cómo crear una estructura en la pila en C?
- 21. ¿Cómo puedo crear una contraseña?
- 22. ¿Por qué no puedo crear una matriz con el tamaño determinado por una variable global?
- 23. que hace estallar a una viewcontroller específico en una pila de navegación
- 24. ¿Cómo puedo usar un NSArray como una constante global?
- 25. ¿Cómo puedo declarar una variable global en LLVM?
- 26. Desarrollo de iOS: ¿cómo puedo precargar un controlador de vista antes de insertarlo en la pila de navegación?
- 27. ¿Cómo puedo evitar el estado global?
- 28. ¿Cómo puedo crear una configuración de MSI?
- 29. ¿Cómo puedo configurar un controlador global DeadlineExceededError?
- 30. ¿cómo puedo encontrar excepciones nativas en una pila x64?
La respuesta de Peter (a continuación) funcionará ... pero esta interfaz de usuario suena muy "Android". Los usuarios esperan que una barra de pestañas funcione como una barra de pestañas ... esto funciona como ninguna otra aplicación que haya usado alguna vez y va en contra de las expectativas de los usuarios (mal). ¿Hay otra interfaz de usuario que puedas usar para lograr el mismo efecto? – nielsbot
también, en mi opinión, la aplicación de Yelp tiene mala interfaz de usuario y no debe usarse como ejemplo :) – nielsbot