2017-07-11 1 views
1

tabBarController?.selectedIndex = targetIndexを使用して、1つのUIViewControllerを別のUITabBarController内にスワップできます。私はスイッチの後にセグをトリガする方法を知りたいです。ペイロードを持つ別のUITabBarController VCのセグをトリガーしますか?

私はif let vc = tabBarController?.viewControllers?[0] as MyViewController {}を実行しようとしましたが、vc.performSegue()を呼び出しましたが、それがエラーになり、それがUINavigationControllerだと不平を言いました。 (私はvc.prepare()を動作させることさえできませんでしたが、最初の引数として最初の引数として必要なUIStoryBoardSegueをどのように作成するのがうまくいかないのです)これは私のUIViewControllersがUITabBarControllerはナビゲーションコントローラ内にあります。

タブバーコントローラでインデックス0から1に切り替えた後、ナビゲーションコントローラに埋め込まれたビューコントローラでセグをトリガするにはどうすればよいですか?注意しておきたいのは、呼び出すオブジェクト(私のUIViewController)のコピーや文脈上の目的のためのペイロードを渡さなければならないことに注意してください。

答えて

1

あなたが言ったように、インデックスに表示されるviewControllerはUINavigationControllerです。 UINavigationControllerのrootViewControllerを取得し、RootViewControllerでSegueを実行する必要があります。コードの下

動作するはずです: `vc.viewControllers.first`プロパティを指摘して

self.tabBarController?.selectedIndex = 1 
guard let vc = self.tabBarController?.viewControllers?[1] as? UINavigationController else { 
    return 
} 
guard let rootVC = vc.viewControllers.first as? SecondViewController else { 
    return 
} 
rootVC.vc = self 
rootVC.performSegue(withIdentifier: "test", sender: self) 
+0

おかげで - 私はまだ私の方法ラウンドを見つけるのiOSプログラミングに新たなんだが。 – Federer

関連する問題