Я пытаюсь программно переключить элемент панели вкладок. Следующий код работает нормально, но я не могу заставить его работать в определенных ситуациях:
self.tabBarController.selectedIndex = 0;
Вот проблема:
У меня есть контроллер панели вкладок с двумя классами UIViewController. На второй вкладке у меня есть приведенный выше код, помещенный в оператор if в методе viewWillAppear. Приведенный выше код сам по себе работает, но он работает только в том случае, если представление никогда не загружалось. Итак, на первой вкладке у меня есть кнопка. Когда эта кнопка нажата, я программно переключаюсь на вторую вкладку. В этот момент мой код работает, и я остаюсь на первой вкладке. Но переключение не работает после первого раза. Это также не сработает, если я выберу эту вторую вкладку до того, как нажму эту кнопку. Оператор IF, внутри которого находится мой код, срабатывает, но выбранная вкладка не меняется.
Любая помощь будет оценена по достоинству. Пожалуйста, не стесняйтесь обращаться за разъяснениями, если они вам нужны.
Спасибо!
Позвольте мне добавить больше информации:
(1) Это используется только в редких случаях. Первый экран — это экран поиска. После того, как вы нажмете поиск, вы автоматически попадете на вторую вкладку, если нет результатов, тогда вы предупреждены, и вы остаетесь там.
(2) Вторая вкладка содержит список либо всех элементов, если поиск для сужения не выполнялся, либо список суженных элементов. В любом случае, этот список всегда доступен. Поэтому, даже если я остановлю их на странице поиска, если они забудут и перейдут на другую вкладку, им сообщат, что элементов нет. На данный момент я хотел бы вернуть их на первую вкладку, только для удобства.
Это не НАСТОЛЬКО большое дело, я могу жить без этого, и это не та ужасная схема программирования, какой некоторые ее представляют. Я просто хотел добавить один элемент удобства для пользователя...
Спасибо тс! Я использовал следующий метод в своем UITabBarControllerDelegate:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
if(self.tabBarController.selectedIndex == 0){
if([books count] == 0){
[self alertNoResults];
return(FALSE);
}
}
return(TRUE);
}
Работал как шарм!