2016-04-08 5 views
0

У меня есть UITabBarController, выполненный по специальному классу (например, HomeTabBarController), и в моей раскадровке я прикреплял к нему 3 ViewController как это ребенок.UITabBarController - Как переключиться на вкладку определенного типа

Я знаю, что я могу использовать для того, чтобы выбрать конкретный контроллер представления, в моем UITabBarController:

selectedIndex = 2 

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

ответ

0

Как описано в StackOverflow documentation, я собираюсь ответить на свой вопрос.

Давайте сделаем пример, у вас есть UITabBarController с 3 Чайлдс:

  • HomeTabBarController
    • CustomAViewController
    • CustomBViewController
    • CustomCViewController

В вашем HomeTabBarController контроллера вы можете поставить FUNC как это:

func selectCustomATab() { 
    var tab = 0 

    for v in viewControllers! { 
     for k in v.childViewControllers { 
      if k is CustomAViewController { 
       tab = viewControllers!.indexOf(v)! 
      } 
     } 
    } 

    selectedIndex = tab 
} 

И это все, что вы можете повторить для каждого ViewController ребенка, как вам нравится.

Тогда в любой ViewController ребенка вы можете сделать что-то подобное, что для того, чтобы переключить вкладку:

(self.tabBarController as! HomeTabBarController).selectCustomATab() 

Полностью игнорируя то, что это CustomAViewController положение в закладке массива.

0

набора вы вкладка значения индекса бара

tabBarController?.selectedIndex = 2 
+0

Да, как я уже писал в этом вопросе, я знаю. Но я хотел бы сделать проект более гибким. В том, как я показал, я могу изменить положение дочерних элементов ViewController в раскадровке, не заботясь о каких-либо изменениях кода. – giacavicchioli

+1

var index: Int = self.tabBarController.viewControllers.indexOfObjectIdenticalTo (specificViewController) – Jaswanth

+0

Только что попробовал (хотя бы с Swift 2.2) 'viewControllers' не имеет такого метода – giacavicchioli

Смежные вопросы