2016-07-06 5 views
0

Я бы хотел переключить выбранную вкладку, когда пользователь нажимает на вкладку. Скажем, если у меня есть две вкладки, а первая отображается, то нажатие первой вкладки (а также нажатие на вторую вкладку) приведет меня ко второй вкладке. Я реализовал пользовательский UITabBarController, как показано ниже.Невозможно изменить вкладку внутри tabBar (tabBar: didSelectItem item :)

class CustomizedTabBarContorller: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.delegate = self 
     self.selectedIndex = 1     // this way works 
    } 


    override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 

     if tabBar.items?.indexOf(item) == self.selectedIndex { 
      self.selectedIndex = (selectedIndex == 0) ? 1 : 0 // doesn't work 
     } 
    } 

} 

Как изменить вкладку на основе выбранной и постученной вкладки?

Я также посмотрел на:
UITabBar can't change selected index
UITabBarController Set a Default Tab
... и многие другие.

+0

Вы пытаетесь динамически изменять контроллер вида, связанный с элементами панели вкладок? – anders

+0

Нет. На самом деле я не совсем уверен, что вы подразумеваете под «динамически», но у меня есть мой FirstViewController и мой SecondViewController всегда на их позиции, связанной с первым и вторым элементом бара. Это не меняется. – Andrej

+0

Я думаю, я не понимаю, что вы пытаетесь выполнить – anders

ответ

0

Перемещение self.selectedIndex = self.selectedIndex == 0 ? 1 : 0 в основную очередь решает проблему. Работает как шарм.

if tabBar.items?.indexOf(item) == self.selectedIndex { 
    dispatch_async(dispatch_get_main_queue(), { 
     self.selectedIndex = self.selectedIndex == 0 ? 1 : 0 
    } 
} 
Смежные вопросы