iPhoneDev, UITabBarController Избранные проблемы индекса - PullRequest
0 голосов
/ 06 августа 2010

Я пытаюсь программно переключить элемент панели вкладок. Следующий код работает нормально, но я не могу заставить его работать в определенных ситуациях:

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);
}

работал как шарм!

1 Ответ

1 голос
/ 06 августа 2010

Вы переключаете вкладки во время переключения вкладок. Ветчина доктор.

Попробуйте реализовать UITabBarDelegate's - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController; возвращать НЕТ, если результатов нет.

В качестве альтернативы, выполните проверку в -viewDidAppear: (это с большей вероятностью сработает). Если это не сработает, вы даже можете использовать executeSelectorInBackground (но будьте осторожны - пользователь все равно может нажать на другие вкладки!)

...