[Objective-C] modal で移動した画面で次はpush を使う方法

投稿者: | 2012/07/05

Modal で遷移した画面からpushでの画面遷移を行わせたい場合。
例えば設定画面を表示した後、テーブルの各項からpushで次画面に遷移させたいときに使えるTipsです。

 

通常、modalで遷移した画面ではpushによる画面遷移は行えません。
push による画面遷移には、NavigationControllerが必要だからです。
例え親画面がNavigationController を持っていても、modal で遷移した段階で、その関係は切れてしまいます。

ではどうするか?

遷移先のUIViewController に改めてNavigationController を与えてやればOKです。

 

通常

このやり方だと、mvを表示した後、pushでの画面遷移ができません。

UIViewController* mv = [[UIViewController alloc] init]; // モーダルで表示する画面
[self presentModalViewController:mv animated:YES]; // モーダルで画面遷移

 

NavigationController付き

こちらの方法だと、mvを表示した後、pushでの画面遷移が可能です。

UIViewController* mv = [[UIViewController alloc] init]; // モーダルで表示する画面
UINavigationController* nc = [[UINavigationController alloc] initWithRootViewController:mv]; // mvにNavigationController を新たに付与
[self presentModalViewController:nc animated:YES]; // UINavigationControllerに向けてモーダルで画面遷移

 

参考

この記事は@nodoa_me さんの、この記事を参考にさせていただきました。 *01【参考】つか、ほぼまんますな。

ModalView の中で NavigationController を使う « 水色のドア

 


脚注

脚注
01 【参考】つか、ほぼまんますな。

コメントを残す

メールアドレスが公開されることはありません。

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