Swift での画面遷移メモ

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
これです。
スクリーンショット 2015-07-14 14.04.54
多分こうやって繋がっていない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 が使いたい時は間違わないように

わかりやすくまとまらなかったけど、こんな感じですね

ではでは

Atsumi3

したいことをします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください