Переключение вкладок программно не работает должным образом - PullRequest
1 голос
/ 13 января 2012

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

[tabBarController setSelectedIndex:index]

Я тоже пробовал:

tabBarController.selectedViewController = [tabBarController.viewControllers objectAtIndex:index];

Работает впервые - переключение между вкладками и видом, связанным с вкладкой. Однако это не работает во второй раз и после. Затем он ошибочно переключает вкладку (не всегда) и не переключает контроллер представления, связанный с вкладкой.

Есть идеи?

Вот что я пытаюсь сделать:

Вкладка A: у меня есть вкладка, которая запускает камеру, чтобы сделать снимок и добавить некоторые детали.

Вкладка B: у меня есть вкладка со списком сделанных снимков и кнопка с полосой для добавления нового объекта путем съемки и добавления деталей.

Я пытаюсь сделать так, чтобы, когда пользователь нажимает вкладку A, он переключается на вкладку B и запускает метод добавления элемента. Какой лучший способ сделать это?

Спасибо.

Вот более подробный код:

Вкладка A подключена к контроллеру навигации с помощью UIViewController. В этом контроллере у меня есть следующее:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate switchView];
}

В AppDelegate.m у меня есть следующее:

- (void)switchView
{   
tabBarController = (UITabBarController *)self.window.rootViewController;
tabBarController.selectedViewController 
= [tabBarController.viewControllers objectAtIndex:3];
}

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Оказывается, проблема заключалась в том, что я менял индекс tabBarController с viewWillAppear вместо viewDidAppear. Должно быть что-то делать с порядком загрузки вещей.

2 голосов
/ 13 января 2012

Класс UIViewController имеет свойство tabbarController, поэтому вы можете упростить задачу, вызвав родительский контроллер контроллера представления (контроллер панели вкладок) вместо использования делегата приложения для доступа к контроллеру панели вкладок.Вызов setSelectedIndex тоже должен быть в порядке.Итак, из вашего контроллера представления:

[self.tabbarController setSelectedIndex:3];

Чтобы помочь с отладкой, вы можете поместить несколько NSLogs в соответствующие места:

NSLog(@"The currently selected tab is: %@",self.tabbarController.selectedIndex);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...