La risposta dipende dal fatto che UITabBar sia gestito o meno da un UITabBarController.
Caso 1 - UITabBar è già gestito da un UITabBarController
implementare il protocollo UITabBarControllerDelegate
. In particolare il metodo tabBarContoller:didSelectViewController:
. Imposta un'istanza della classe che implementa il protocollo come delegate
di UITabBarController
.
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
NSLog(@"Tab index = %u (%u)", (int)indexOfTab);
}
In questo caso si deve essere a conoscenza della situazione particolare in cui si hanno abbastanza controller nel controller scheda per causare la scheda "Altro" per essere visualizzato. In tal caso riceverai una chiamata allo tabBarController:didSelectViewController:
con un controller di visualizzazione che non è nell'elenco (è un'istanza di una classe UIKit interna UIMoreNavigationController). In tal caso il indexOfTab
nel mio campione sarà NSNotFound
.
Caso 2 - UITabBar non è già gestito da un UITabBarController
implementare il protocollo UITabBarDelegate
. In particolare il metodo tabBar:didSelectItem:
. Imposta un'istanza della classe che implementa il protocollo come delegate
di UITabBar
.
- (void)tabBar:(UITabBar *)theTabBar didSelectItem:(UITabBarItem *)item {
NSUInteger indexOfTab = [[theTabBar items] indexOfObject:item];
NSLog(@"Tab index = %u", (int)indexOfTab);
}
EDIT: Modificato le variabili dei parametri metodo per eliminare la compilazione del PO avvertimento circa tabBarController
essere nascosto.
Vi preghiamo di considerare questa domanda come una risposta :-) http: // StackOverflow.it/questions/31521951/how-to-get-the-tag-of-selected-uitabbaritem-in-uitabbarcontroller-per-di-più di –