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 | 【参考】つか、ほぼまんますな。 |
---|