как получить событие, которое переключает вкладку меню на iphone - PullRequest
26 голосов
/ 11 января 2010

Я пытаюсь выяснить, как перехватить событие, управляющее вкладками переключателя на UITabBarController. Как я мог сделать это?

Ответы [ 4 ]

35 голосов
/ 11 января 2010

Реализация UITabBarControllerDelegate например в вашем приложении делегат applicationDidFinishLaunching

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    tabBarController.delegate = self;
    [window addSubview:tabBarController.view];
}

Затем реализуйте либо:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;

Первый метод вызывается перед переключателем вида и дает вам возможность «наложить вето» на переключатель вида, возвращая NO

Второй метод вызывается после переключения вида

13 голосов
/ 10 ноября 2014

Если вы используете раскадровку, сделайте это

в didFinishLaunchingWithOptions

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];

Также в AppDelegate, сохраняйте <UITabBarControllerDelegate>

А потом

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   //Write your code here
}
5 голосов
/ 11 января 2010

Посмотрите на следующий метод в UITabBarControllerDelegate:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

Сообщает делегату, что пользователь выбрал элемент на панели вкладок.

1 голос
/ 11 января 2010

Является ли UITabBarControllerDelegate тем, что вы ищете, в частности - tabBarController:didSelectViewController:?

...