Digamos que tengo una UIButton
vista en una pestaña en la aplicación de mi iPhone, y quiero que abra una pestaña diferente en la barra de pestañas del TabBarController
. ¿Cómo escribiría el código para hacer esto?
Supongo que descargo la vista existente y cargo una vista de pestaña específica, pero no estoy seguro de cómo escribir el código exactamente.
iphone
objective-c
ios
uitabbarcontroller
Rottendevice
fuente
fuente
Respuestas:
Pruebe este código en Swift u Objective-C
Rápido
C objetivo
fuente
-setSelectedViewController:
.Tenga en cuenta que las pestañas se indexan a partir de 0. Entonces, el siguiente fragmento de código funciona
va a la quinta pestaña en la barra.
fuente
Mi opinión es que
selectedIndex
o usarobjectAtIndex
no es necesariamente la mejor manera de cambiar la pestaña. Si reorganiza sus pestañas, una selección de índice codificada puede alterar su comportamiento anterior de la aplicación.Si tiene la referencia de objeto del controlador de vista al que desea cambiar, puede hacer lo siguiente:
Por supuesto, debes asegurarte de que
myViewController
realmente esté en la lista detabBarController.viewControllers
.fuente
Simplemente puede establecer la
selectedIndex
propiedad en UITabBarController en el índice apropiado y la vista cambiará al igual que el usuario presionó el botón de tabulación.fuente
selectedIndex
tampoco me funciona con índices> 4, peroselectedViewController
sí.Intenté lo que sugirió Disco S2, estaba cerca pero esto es lo que terminó funcionando para mí. Esto se llamó después de completar una acción dentro de otra pestaña.
fuente
Para los casos en los que puede estar moviendo las pestañas, aquí hay un código.
fuente
Como la solución de Stuart Clark pero para Swift 3:
Úselo así:
Tenga en cuenta que mi tabController enlaza con viewControllers detrás de navigationControllers. Sin navigationControllers se vería así:
fuente
Quería poder especificar qué pestaña se mostraba por clase en lugar de índice, ya que pensé que era una solución sólida que dependía menos de cómo conectaba el IB. No encontré las soluciones de Disco o Joped para trabajar, así que creé este método:
lo llamas así:
Espero que esto sea útil para alguien
fuente
Mi problema es un poco diferente, necesito cambiar de un childViewController en 1st tabBar a home viewController de 2nd tabBar. Simplemente uso la solución provista en el piso de arriba:
Sin embargo, cuando se cambió a la página de inicio de 2nd tabBar, el contenido es invisible. Y cuando depuro, viewDidAppear, viewWillAppear, viewDidLoad, ninguno de ellos se llama. Mi solución es agregar el siguiente código en el UITabBarController:
fuente
Uso en
AppDelegate.m
archivo:fuente
Como la solución de Stuart Clark, pero para Swift 3 y usando el identificador de restauración para encontrar la pestaña correcta:
Úselo de esta manera ("Humanos" y "Robots" también deben configurarse en el guión gráfico para viewController específico y su ID de restauración, o use el ID del guión gráfico y marque "usar ID del guión gráfico" como ID de restauración):
Tenga en cuenta que mi tabController enlaza con viewControllers detrás de navigationControllers. Sin navigationControllers se vería así:
fuente
fuente