Storyboard使ったり使わなかったり、コードの中から遷移する方法もいろいろあって??ってなったのでメモ
SecondViewController への遷移がしたい。
※ $~~ は適当なオブジェクト
まず、swiftで使われている遷移メソッド
self.performSegueWithIdentifier(“View name”, sender: $AnyObject);
self.presentViewController( $ViewController, animated: $bool, completion: $AnyClosure);
ナビゲーションバー付きの時
self.navigationController?.pushViewController($ViewController, animated: $bool);
まず上の二つ
self.performSegueWithIdentifier(“View name”, sender: $AnyObject);
第一引数の “View Name” は Segueのidentifier
これです。
多分こうやって繋がっていないViewには遷移できません。(しらない
つぎ
self.presentViewController($ViewController, animated: $bool, completion: $AnyClosure);
第一引数は遷移先のViewControllerクラス
——————————————–
遷移先ViewControllerクラスのインスタンス化方法は
1. var vc = SecontViewController();
2. var vc = UIStoryboard(name:“所属StoryBoard名”, bundle: nil).instantiateViewControllerWithIdentifier(“ViewのStoryboardID”) as! UIViewController;
3. var vc = self.storyboard?.instantiateViewControllerWithIdentifier(“ViewのStoryboardID”) as! UIViewController;
とかがある。
まず よく他の言語で見る
1. ViewController();
もしStoryboard上で いろいろなViewをセットしてレイアウト作ってるならこれを使ってはいけない
Outletがnilになって、黒い画面が表示されます..。
Storyboardを使わずにaddSubViewとか使って配置してるならこれでもいい。
次 StoryboardからViewControllerを読み込む。
2. UIStoryboard(~).instantiateViewControllerWithIdentifier(~)
3. self.storyboard?.instantiateViewControllerWithIdentifier(~)
レイアウトにStoryboardを使ってる人はこれを使えば安泰ですね。
Segue で繋がってなくても問題ないです。
2. を使えば、別のStoryBoardのViewも呼び出せます。
————————————–
とりあえず、
performSegueWithIdentifier と presentViewController
は好きな方を使えばいいです。
もしNavigationControllerを使っていて、遷移先で上部バーを表示させたかったら
三つ目の
self.navigationController?.pushViewController($ViewController, animated: $bool);
を使おう
navigationController にももちろん、
presentViewController と
performSegueWithIdentifier
が実装されてるから、 pushViewController が使いたい時は間違わないように
わかりやすくまとまらなかったけど、こんな感じですね
ではでは