Делегат TabBarController не работает - PullRequest
3 голосов
/ 03 марта 2010

Может ли кто-нибудь помочь мне, когда я использую свой делегат UITabBarController, он не работает ..

Я вызвал такой метод делегата ..

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

 [self.navigationController popToRootViewControllerAnimated:NO];
}

Ответы [ 5 ]

12 голосов
/ 25 октября 2012

Если то, что вы делаете, это создание подкласса UITabBarController, то ... как ни странно ... вы можете заставить его работать, задав себя в качестве делегата:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.delegate = self;
}

Тогда действие didSelectViewController будет выполняться нормально:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"View Changed");
}

Не забудьте добавить свой класс UITabBarControllerDelegate в ваш файл .h:

@interface MyTabBarController : UITabBarController <UITabBarControllerDelegate>

@end
2 голосов
/ 15 июля 2015

Если вы используете настройку панели вкладок, расширяя UITabBarController и пытаясь программно изменить выбранный индекс панели вкладок, он не будет вызывать делегатов.

Пожалуйста, смотрите примечание внутри "UITabBarDelegate":

// Note: called when a new view is selected by the user (but not programmatically)
1 голос
/ 24 мая 2010

Это может помочь вам

-(void)applicationDidFinishLaunching:(UIApplication *)application {
    tabBarController.delegate=self;
    // Add the tab bar controller's current view as a subview of the window
    [window addSubview:tabBarController.view];
}
0 голосов
/ 06 апреля 2011

указать

UITabbarcontrollerDelegate в файле .h

тогда

-(void)applicationDidFinishLaunching:(UIApplication *)application {

tabBarController.delegate=self;

// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
}
0 голосов
/ 05 марта 2010

Прочтите документы , чтобы получить более глубокое понимание взаимосвязей между контроллерами навигации, контроллерами tabBar и иерархией представления и навигации.

Затем просмотрите предоставленный код.Какой вид / контроллер является контейнером?Вы открываете навигационный контроллер self, который отличается от tabBarController.Я не думаю, что вам действительно нужен этот метод, если вы хотите переключаться между вкладками.

Попробуйте закомментировать этот метод.Это необязательный метод в протоколе делегата UITabBarController.Если вы закомментируете это, вы должны получить стандартное поведение контроллера вкладок, которое должно состоять в том, чтобы выбрать соответствующий viewController и переключиться на новый вид.действие, выполняемое при переключении между контроллерами представления.

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