UITabBarDelegate в AppDelegate - PullRequest
       23

UITabBarDelegate в AppDelegate

1 голос
/ 02 августа 2011

У меня есть UITabController в моем главном окне, и я хотел бы добавить немного логики, когда каждая вкладка выбрана. Я добавил делегата в заголовочный файл:

@interface MyAppAppDelegate : NSObject <UIApplicationDelegate, UITabBarDelegate> {

У меня есть метод для события изменения вкладки:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
    //some code
}

Но код внутри метода didSelectItem не вызывается. Я подключил делегата для UITabBarController к моему AppDelegate в IB. Есть ли что-нибудь еще, что мне нужно сделать?

Ответы [ 5 ]

2 голосов
/ 02 августа 2011

Если вы назначаете делегата через IB, вы должны подключить делегата для вашего TabBar (в отличие от вашего TabBarController) к вашему делегату приложения.

enter image description here

Действительно, вы ищете не UITabBarControllerDelegate, а UITabBarDelegate.

Если вы делаете это программно, то из контроллера панели вкладок viewDidLoad выполните:

self.tabBar.delegate = [UIApplication sharedApplication].delegate;
1 голос
/ 29 января 2013

Если вы используете UITabbarController, вы можете использовать UITabBarControllerDelegate вместо UITabBarDelegate.

Затем вы можете установить self.delegate = self. Тогда вы используете:

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

вместо:

 (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
0 голосов
/ 04 августа 2011

В итоге я поместил его в метод viewWillAppear вида на нужной мне вкладке.Кажется, работает нормально.

0 голосов
/ 02 августа 2011

Я мог бы быть здесь на выступе, но я думаю, что подпись метода должна быть:

- (IBAction)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

, а затем вы подключаете его к панели вкладок в IB.после перехода на IBAction он должен появиться в IB

0 голосов
/ 02 августа 2011

Вы назначили какой-нибудь класс делегатом панели вкладок? Что-то вроде

myTabBar.delegate = self;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...