UINavigationController配下のビューの閉じ方
UINavigationControllerの制御下(遷移下)のUIViewControllerで処理が終了したのでビューを閉じようとしたのだが、全く反応が無い。
FooViewController.m
[self dismissViewControllerAnimated:YES completion:nil]; //全く反応無し
このFooViewControllerはUINavigationControllerの制御下(遷移下)にあるため、通常のモーダルビューと同じ方法では閉じることができないのだ。
正しい方法は
[self.navigationController popViewControllerAnimated:YES];
となる。遷移を一つポップするんだな。納得 (ドキュメントみろよ俺)
また、このようにUINavigationControllerの制御下(遷移下)にある場合は遷移のルートとなるビューに直接戻ることもできる。
[self.navigationController popToRootViewControllerAnimated:YES];
iOSのUINavigationControllerは、上手く使うとiPhoneらしいタップ数の少ない操作性の良いアプリケーションを書くことができるが、コーディングの前に、ビュー同士の関係とその遷移をはっきりと頭に描いていないと使えないので中々取っつきづらい。 (私などついついモーダルビューを多用してしまう)