2016-04-08 17 views
0

私はUITabBarControllerをカスタムクラス(例えばHomeTabBarController)で実装していますが、私のストーリーボードでは3 ViewControllerの子として実装しています。UITabBarController - 特定のタイプのタブに切り替える方法

私は私UITabBarControllerに、特定のビューコントローラを選択するために、使用できることを知っている:

selectedIndex = 2 

しかし、私は私のプロジェクトは、もう少し柔軟にしたいと思いますので、私は選択したいです子タブはタイプであることを知っているだけで、その位置はありません。どうしたらいいですか?

答えて

0

StackOverflow documentationに記載されているように、私自身の質問に答えるつもりです。

  • HomeTabBarController
    • CustomAViewController
    • CustomBViewController
    • CustomCViewController

のは、例を作ってみましょう、あなたはUITabBarController 3とのチャイルズを持っていますあなたの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の子供のために繰り返すことができます。

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

が完全にタブ配列のCustomAViewController位置が何を無視:あなたは、タブを切り替えるためにそのような何かを行うことができます任意のViewController子で次に

0

あなたはタブバーインデックス値ですセット

tabBarController?.selectedIndex = 2 
+0

はい、私が質問に書いたように、私は知っています。しかし、プロジェクトをより柔軟にしたいと思います。私が示した方法では、コードの変更を気にすることなく、ストーリーボード内の 'ViewController'子の位置を変更することができます。 – giacavicchioli

+1

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

+0

(少なくともSwift 2.2では) 'viewControllers'にはこのようなメソッドはありません – giacavicchioli

関連する問題