【Objective-C】ModalとNavigationの画面遷移方法の違い

【Xcode5.1.1 + iOS 7.1 + MacOX10.9.4】

Storyboardの画面リンク(Segue)を使わずに、コードで画面遷移を書いていてハマったのでメモ。

・ナビゲーション(Navigation/UITableViewControllerなどで使う、NavigationBarが出てくる画面遷移)

    //画面を遷移(※confVCは表示するViewCOntroller)
    [self.navigationController pushViewController:confVC animated:YES];

    //元画面に戻る
    [self.navigationController popViewControllerAnimated:YES];

・モーダル(Modal/現在のViewに重なるように表示する画面遷移)

    //画面を遷移(※confVCは表示するViewCOntroller)
    [self presentViewController:configurationVC animated:YES completion:nil];

    //元画面に戻る
    [self dismissViewControllerAnimated:YES completion:nil];

この2つをごっちゃにしていてハマりました。どのViewControllerでも、ナビゲーション(Navigation)の方法ならきちんとNavigationBarが表示されて戻るボタンが自動でつきます。

最初はUITableViewControllerだけNavigationBarが出なくて調べていたら、こんな基本的なことだたっという・・。

【参考】
iOS アプリの画面開発の基礎を理解する – A Day In The Life
iPhoneプログラミング入門「モーダルビュー1」
Objective-C – モーダルビューを出したり消したり – Qiita
yuki0n0 高校生アプリ開発者のブログ: storyboardで作った画面をコードで画面遷移

だんだん作り込んでくると、基本的な画面のレイアウト(固定部分)はStoryboardを使って、画面遷移やボタン配置など可変になる部分はコードで制御する方がいいかなと思っていて、Storyboardの画面リンク(Segue)を全部削除してコードで書き換えてます。