UITabBarController делегат методы не вызываются
В настоящее время я рефакторингую свое приложение для iPad, и вместо кнопки на панели навигации я хотел бы поместить мою кнопку выхода в качестве элемента кнопки на панели вкладок.
Все мои представления находятся в уникальной раскадровке, поэтому я получаю свою панель вкладок в своем Appdelegate.m Таким образом:
// Add logout tab to tabbar
storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tabbar = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabbar"];
[tabbar setDelegate:self];
Конечно, протокол делегата объявлен в моем Appdelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
После этого я создаю пустой viewController, чтобы создать свою вкладку выхода:
UIViewController *logout = [[UIViewController alloc]init];
Затем я получаю tabbar viewControllers as NSMutableArray и добавить мой выход VC:
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[tabbar viewControllers]];
[viewControllers addObject:logout];
Наконец, я установил tabbar viewControllers с моим новым массивом:
[tabbar setViewControllers:viewControllers];
Я думаю, что эти шаги правильны.
Так почему же didSelectViewController не вызывается при изменении отображаемой вкладки ?
Если это может помочь, вот мой метод didSelectViewController (который является write in AppDelegate.m)
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NSLog(@"onglet sélectionné : %d / %d", [tabBarController selectedIndex], [[tabBarController viewControllers]count]);
//select the index where your logout button is
if ([tabBarController selectedIndex] == [[tabBarController viewControllers]count]-1) {
NSLog(@"logout");
}
}
Заранее спасибо за вашу помощь !
2 ответа:
Попробуйте инициализировать объект tabbar;
// Add logout tab to tabbar storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UITabBarController *tabbar = [[UITabBarController alloc] init]; tabbar = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabbar"]; [tabbar setDelegate:self];