私はに変数controllerToLoad
を保持しています。デフォルトでは「MainVC」ですが、メニュー項目をクリックするときにはContainerVC
を表示しますが、MainVC
をロードする代わりにSecondVC
をロードします。 私は次の操作を行って、私のContainerVCのviewDidLoadメソッドでMainVCをロード:viewDidLoad()prepareForSegue()の前に呼び出される終了:Swift
if let controller = self.storyboard?.instantiateViewControllerWithIdentifier(controllerToLoad) {
self.mainViewController = controller
}
私はこれを行うための最善の方法は、セグエであるので、私は次のコード行を呼び出すと思った:
self.performSegueWithIdentifier("MenuSegue", sender: self)
はその後、私のprepareForSegue
に、私は次のようにします。performSegueWithIdentifier
を呼び出すとき
if (segue.identifier == "MenuSegue"){
let secondViewController = segue.destinationViewController as! ContainerViewController
secondViewController.controllerToLoad = "SecondVC"
}
何らかの理由で、それは自動的に012をロードしますとprepareForSegue
が実行されるのを待つ代わりにself.mainViewController
を "MainVC"に設定し始めます。私はprepareForSegue
が完了するのを待たない理由を知らない。
私は、印刷文の束を追加してこれをテストしました。 self.performSegueWithIdentifier
の直前、secondViewController.controllerToLoad = "SecondVC"
の前、ViewDidLoad
の私のContainerVC
の前。実際には、すぐperformSegueWithIdentifier
が、それは、その後ContainerVC
のViewDidLoad
を呼び出した直後に、と呼ばれるよう
let secondViewController = segue.destinationViewController as! ContainerViewController secondViewController.controllerToLoad = "SecondVC"
そうです、あなたは正しいです。私は自分のContainerVCコードを取り出し、self.mainViewControllerを私が渡す変数に設定するメソッドに入れました。素晴らしいヒント! –