La respuesta depende de si el UITabBar está o no gestionado por un UITabBarController.
Caso 1 - UITabBar ya está manejado por un UITabBarController
aplicar el Protocolo UITabBarControllerDelegate
. Específicamente el método tabBarContoller:didSelectViewController:
. Establezca una instancia de su clase que implemente el protocolo como delegate
del UITabBarController
.
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
NSLog(@"Tab index = %u (%u)", (int)indexOfTab);
}
En este caso hay que tener en cuenta la situación especial en el que tiene suficientes controladores en el controlador ficha para causar la pestaña "Más" que se mostrará. En ese caso, recibirá una llamada al tabBarController:didSelectViewController:
con un controlador de vista que no está en la lista (es una instancia de una clase UIKit interna UIMoreNavigationController). En ese caso, el indexOfTab
en mi muestra será NSNotFound
.
Caso 2 - UITabBar no está ya manejado por un UITabBarController
aplicar el Protocolo UITabBarDelegate
. Específicamente el método tabBar:didSelectItem:
. Establezca una instancia de su clase que implemente el protocolo como delegate
del UITabBar
.
- (void)tabBar:(UITabBar *)theTabBar didSelectItem:(UITabBarItem *)item {
NSUInteger indexOfTab = [[theTabBar items] indexOfObject:item];
NSLog(@"Tab index = %u", (int)indexOfTab);
}
EDIT: Modificado las variables de parámetros método para eliminar advertencia sobre tabBarController
se oculta la compilación de la OP.
Por favor, tenga en cuenta esta cuestión como una respuesta :-) http: // stackoverflow.com/questions/31521951/how-to-get-the-tag-of-selected-uitabbaritem-in-uitabbarcontroller-for-more-than –