2017-11-06 16 views
0

私はUITabBarControllerを使用しています。ビュー内のボタンを使用して、バーをクリックすることなく次のビューに移動したいと考えています。 これをプログラムで行うにはどうすればよいですか?Swift 4 - UITabBarControllerからViewControllerをプログラムで切り替える方法

Storyboard

class PlayTableBarViewController: UITabBarController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    func nextView() { 
     print(self.viewControllers!) 
     self.selectedViewController = self.viewControllers![self.selectedIndex + 1] 
     self.show(self.selectedViewController!, sender: nil) 
    } 
} 

class StartVC: UIViewController { 
    private var _fatherVC: PlayTableBarViewController? 

    var fatherVC: PlayTableBarViewController { 
     if _fatherVC == nil { 
      _fatherVC = self.storyboard?.instantiateViewController(withIdentifier: "playViewController") as? PlayTableBarViewController 
     } 
     return _fatherVC! 
    } 

    @IBAction func backToGame(_ sender: UIButton) { 
     fatherVC.nextView() 
    } 

} 

答えて

1

利用UITabBarControllerのselectedIndexプロパティ(あなたUITabBarでより多くの部分を持つようにしたいまで

から:。 https://developer.apple.com/documentation/uikit/uitabbarcontroller/1621171-selectedindex

このプロパティを設定して、選択したビューを変更しますコントローラを指定したvの に接続します。コントロール配列を参照してください。 ナビゲーションコントローラ自体を選択するには、代わりに selectedViewControllerプロパティの値を変更する必要があります。

class PlayTableBarViewController: UITabBarController { 
    func nextView() { 
     self.selectedIndex = self.selectedIndex + 1 
    } 
} 
+0

ありがとうございます! – Lioru95

0

私は_fatherVCを初期化エラーを検出しました。この:

_self.storyboard?.instantiateViewController(withIdentifier: "playViewController") 
    as? PlayTableBarViewController_ 

は次のようになります。

_fatherVC = self.tabBarController as? PlayTableBarViewController 

今では完全に取り組んでいます。

関連する問題