ios - titulos - cómo cambiar el título de uiviewcontroller independientemente del título del elemento tabbar
poner titulo imovie iphone (8)
Estoy configurando mi título de controladores de vista como este en vista cargó:
self.title = @"my title";
antes de esto, establecí el título en los story boards para el controlador de vista y el controlador de navegación en los que está incrustado. Lo configuré para: "Título";
Cuando hago clic en la pestaña que contiene el controlador de vista, el título del elemento de la barra de pestañas y de uiviewcontroller
cambian a: mi título
Me gustaría que el controlador de visualización cambiara, pero el elemento de la barra de pestañas se mantendría con el título: Título
¿Cómo puedo lograr esto?
Rápido
Establecer el título de la barra superior
self.navigationController?.navigationBar.topItem?.title = "top title"
Establecer el título del elemento de tabulación
self.tabBarController?.tabBar.items?[0].title = "tab title"
Establecer ambos títulos
self.title = "both titles"
Bastante tarde para esto. Puede hacer que su TabBarController sirva como UITabBarControllerDelegate y UINavigationControllerDelegate para sí mismo y los controladores de navegación incrustados en cada una de sus pestañas, respectivamente.
.h:
@interface YourTabBarController : UITabBarController <UITabBarControllerDelegate, UINavigationControllerDelegate>
@end
.metro:
- (void) viewDidLoad {
// UITabBarControllerDelegate
self.delegate = self;
// UINavigationControllerDelegates
yourNavigationController.delegate = self;
...
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
yourNavigationController.tabBarItem.title = @"Tab Bar Title";
...
}
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
yourNavigationController.tabBarItem.title = @"Tab Bar Title";
...
}
En función de algunas pruebas rápidas, parece que estas dos acciones delegadas deberían cubrir cualquier caso perdido y actualizarán el título si está cambiando de pestaña o navegando en su controlador de navegación. Para completitud, podría actualizar su título en didShowViewController también, pero basado en lo que he visto, no creo que sea necesario.
Creo en el método viewDidLoad
del controlador de vista que puedes hacer:
self.title = @"my title";
self.tabBarItem.title = @"tab title";
Entonces para aquellos que todavía no lo entienden (como yo)
self.navigationItem.title = @"my title";
establece el título de la barra de navegación .
self.tabBarItem.title = @"my title";
establece el título de la barra de pestañas
self.title = @"my title";
establece ambos de estos .
Para Swift usa esto,
self.navigationItem.title = "Navigation bar title"
self.title = "Tab bar title"
Parece que quieres cambiar el título en la barra de navegación, pero no el de la barra de pestañas. Esto debería hacer eso.
[self.navigationItem setTitle:@"my title"];
Rápido:
self.navigationItem.title = "My Title"
Probablemente un poco tarde (pero).
Establecer el título de un VC cambia el título de la navegación Y la barra de pestañas. (si el VC ya está conectado a ambos).
Si desea tener títulos separados, necesita configurarlos manualmente, normalmente establece el título para el VC y luego específicamente el título del tabBarItem, ya que es una propiedad del
Nota: Si tiene un controlador de barra de pestañas con controladores de navegación en la raíz de cada controlador de vista, establecer el elemento de barra de pestañas en los controladores de vista no afectará el título si está configurando navigationItem.title
. Deberá configurar tabBarItem
en el controlador de navegación en lugar de que se tabBarItem
del controlador de la barra de pestañas.
Ninguna de las respuestas publicadas por otros me funcionó porque todos los controladores de vista de mi barra de pestañas tienen controladores de navegación en la raíz; este es un patrón de jerarquía común para UITabBarController
. En su lugar, debe establecer tabBarItem
del controlador de tabBarItem
para que el título se muestre de forma diferente del título del elemento de navigationItem
Puede crear su tabBarItem
y asociarlo a su CV directamente así.
let tabBarVCOne = BooksListViewController()
tabBarVCOne.tabBarItem = UITabBarItem(title: "Books", image: nil, tag: 0)
tabBarViewControllers.append(tabBarVCOne)
...
Luego, tendrá algo como esto: self.viewControllers = tabBarViewControllers.map (UINavigationController.init)
//Wrap each view controller in a navigation controller.
self.viewControllers = tabBarViewControllers.map(UINavigationController.init)
Pero eso debería cambiarse a lo siguiente para agarrar el tabBarItem
ya asociado del controlador de vista y configurarlo en el controlador de navegación automáticamente.
self.viewControllers = tabBarViewControllers.map({
let navigationController = UINavigationController.init(rootViewController: $0)
navigationController.tabBarItem = $0.tabBarItem
return navigationController
})
Ahora podrá tener un título diferente (establecido desde su VC) separado del título definido para su tabBarItem
.