Ответ зависит от того, управляется ли UITabBar UITabBarController или нет.
Случай 1 - UITabBar уже обрабатывается UITabBarController
Реализация* Протокол 1007 *.В частности, метод tabBarContoller:didSelectViewController:
.Установите экземпляр вашего класса, который реализует протокол как delegate
из UITabBarController
.
- (void)tabBarController:(UITabBarController *)theTabBarController didSelectViewController:(UIViewController *)viewController {
NSUInteger indexOfTab = [theTabBarController.viewControllers indexOfObject:viewController];
NSLog(@"Tab index = %u (%u)", (int)indexOfTab);
}
В этом случае вы должны знать об особой ситуации, когда у вас достаточно контроллеров на вкладкеконтроллер для отображения вкладки «Дополнительно».В этом случае вы получите вызов к tabBarController:didSelectViewController:
с контроллером представления, которого нет в списке (это экземпляр внутреннего класса UIKit UIMoreNavigationController).В этом случае indexOfTab
в моем примере будет NSNotFound
.
Случай 2 - UITabBar НЕ уже обрабатывается UITabBarController
Реализация UITabBarDelegate
протокол.В частности, метод tabBar:didSelectItem:
.Установите экземпляр вашего класса, который реализует протокол как delegate
из UITabBar
.
- (void)tabBar:(UITabBar *)theTabBar didSelectItem:(UITabBarItem *)item {
NSUInteger indexOfTab = [[theTabBar items] indexOfObject:item];
NSLog(@"Tab index = %u", (int)indexOfTab);
}
EDIT: Изменены переменные параметра метода, чтобы исключить предупреждение компиляции OP о скрытии tabBarController
.