tabBarController: shouldSelectViewController: не вызывается, когда установлен делегат - PullRequest
3 голосов
/ 29 февраля 2012

Я думаю, что я сделал здесь свою домашнюю работу.

Я хочу, чтобы делегат моего приложения был делегатом для моего UITabBarController.

Используя IB, я подключился UITabBarControllerделегат моего делегата приложения.

Файл заголовка делегата приложения:

@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {

Я пытаюсь реализовать метод делегата:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    NSLog(@"shouldSelectViewController called.");
    // do some stuff with viewController
    return YES;
}

У моего делегата приложения есть выход на UITabBarController это связано в IB.Когда я делаю это:

NSLog(@"tab bar controller delegate is %@", self.tabBarController.delegate);

я получаю хороший результат, например tab bar controller delegate is <MyAppDelegate: 0x6e86a30>.

Чего мне не хватает?

Ответы [ 2 ]

5 голосов
/ 27 ноября 2012

Просто напишите этот код

self.tabBarController.delegate = self; 
2 голосов
/ 01 марта 2012

Хорошо, нашел решение. В моем RootViewController был какой-то старый код, который устанавливал этот контроллер в качестве делегата. На RootViewController методы делегата не были реализованы, поэтому казалось, что ничего не происходит. Поскольку RootViewController установлен как делегат ПОСЛЕ MyAppDelegate, делегат фактически был установлен на RootViewController.

Итак, урок состоит в двойной проверке вашего кода, чтобы убедиться, что какой-то другой объект также не установлен в качестве делегата.

...