2017-02-16 15 views
1

私はタブ付きのアプリケーションを作っています。それには、TabBarControllerと4つのViewControllerが付属しています。Swift 3 - 起動時に複数のViewControllerをロードする

デフォルトでは、起動時にFirstViewControllerがロードされます。タブメニューから2番目のビューに切り替える前に、開始時にFirstViewControllerSecondViewControllerの両方をロードしたいとします。私がこれまで試したどのような

は、私は、カスタムMyTabBarControllerクラスを作成し、ViewDidLoad()

var sv = SecondViewController() 
sv.loadView() 

を使用しようとしましたが、ストーリーボードから(私の推測)のMapView要素がなかったので、それは、ロード中に致命的なエラーの原因となったということですロードされる。

ストーリーボード要素を使用する2つのviewControllerを同時に読み込む正しい方法は何ですか?私の他のすべての試みは今まで成功していない。

secondViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "yourIdentifier") as! SecondViewController 

それだ:

+0

UITabBarControllerをプログラムで作成していますか?そうであれば、それぞれのView Controllerをプログラムで作成し、タブバーコントローラの 'viewControllers'プロパティに割り当てることができます。しかし、これは典型的なデザインパターンではありません。なぜあなたはこれをやろうとしているのですか?性能上の理由から(遅延を避けるために第2のコントローラをプリロードする)か? –

+0

ええと、あなたの質問が正しくなったら、私はストーリーボードでTabBarControllerを作成し、次に 'MyTabBarController:UITabBarController'クラスを作成してそれをstoryboard要素に割り当てました。私はそれが必要だと思ったので、2つのView Controllerを一度に読み込むための手段としてのみ行った。なぜ私はそれらが同時にロードされている必要がある理由は、遅延を避けることです正確には –

答えて

1

は、あなたのメインビューコントローラ

var secondViewController:UIViewController! 

そして、あなたのviewDidLoadでに追加します。あなたがそれを提示したい場合は:

self.present(secondViewController, animated: true, completion: nil) 
+0

、それは問題を解決するようです! –

+0

問題はありません@AlliceA!同じ問題に直面している他の人々がそれを修正できるように、正しい答えとしてマークしてください。 –

関連する問題