この回答で提案されたようにすることができます: InstantiateViewControllerWithIdentifier
さらに、リンクの回答がもともとObjective-Cで書かれていたため、Swiftで書き直されたリンク解答のコードを提供しています。
let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as! SecondViewController
vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)
EDIT:
この答えは、私は別のよりフェイルセーフな方法を提供思ったいくつかの注目を集めているので。上記の答えでは、 "識別子"のタイプがSecondViewController
ではない場合、アプリケーションはクラッシュします。スウィフトではオプションのバインディングを使用してこのクラッシュを防ぐことができます。
guard let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as? SecondViewController else {
print("Could not instantiate view controller with identifier of type SecondViewController")
return
}
vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)
それはタイプSecondViewController
であればViewController
がプッシュされるこの方法です。 SecondViewController
にキャストできない場合、メッセージが印刷され、アプリケーションは現在のViewController
のままです。
VC1からVC2へのインターフェイスビルダーでセグを作成し、名前を付けてボタンに関連付けられたアクションから「performSegueWithIdentifier」を呼び出すことができます。そして、 'prepareForSegue'の中で、あなたが使用しているセグを識別する' if'ステートメントを入れ、VC1から渡しているものをつかんで、VC2とBAMに渡して...完了です。 – Adrian
Adrian、これを回答として投稿して、OPがそれを受け入れるようにしてください。これはOP質問に対する正解です。 –