В настоящее время я занимаюсь рефакторингом своего приложения для iPad, и вместо кнопки на панели навигации я хотел бы поместить кнопку «Выход» в качестве элемента кнопки TabBar.
Все мои представления находятся в уникальном StoryBoard, поэтому я получаю TabBar в своем 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 как NSMutableArray и добавляю свой VC выхода из системы:
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[tabbar viewControllers]];
[viewControllers addObject:logout];
Наконец, я установил вкладки viewControllers с моим новым массивом:
[tabbar setViewControllers:viewControllers];
Я думаю, что эти шаги являются правильными. Так почему же didSelectViewController не вызывается, когда я меняю отображаемую вкладку?
Если это может помочь, вот мой метод didSelectViewController (который написан в 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");
}
}
Заранее спасибо за помощь !