2016-12-05 1 views
0

私はカスタムUITabBarControllerを持っており、いくつかのビューコントローラがリレーションシークエンスとして追加されています。私はどのビューコントローラを選択しているかを知りたい。私は処理していますカスタムUITabBarController selectedController

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 


     guard let controller = self.selectedViewController else { 
      fatalError("No controller selected") 
     } 


     // but controller always come as UIViewController and not strongly typed controller 


    } 
+0

タイプ(of: 'self.selectedViewController')を使用して、' UIViewController'のタイプを決定します。 –

+0

typeという名前のメソッドはありませんか? –

+0

自動入力されません。どうしてか分かりません。あなたはそれを使うことができます。 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html –

答えて

0

このDelegateをtabbarcontrollerに実装するだけです。ここからsegueの名前を取得し、グローバル変数に代入すれば、すべて設定されます。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

} 
+0

リレーションシップビューコントローラでは、セグを準備することはできません。 –

+0

もう1つの簡単な方法は、シングルトンを使用し、その中に変数 "curentController"を持たせることです。そして、各VCのviewdidで、VCの名前に変数を設定します。 – GeneCode

関連する問題