遷移の方法
ビューの遷移は以下のコードで行ったものとして説明します。HogeViewController *vc = [[HogeViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
ビューを戻してみる
では、ビューを戻してみます。1つ前に戻る
一つ前に戻るのであれば以下のコードを使用します。[self.navigationController popViewControllerAnimated:YES];
pushされたものをpopしている感じですね。2つ以上前に戻る
2つ以上前に戻るのであれば、まず、UINavigationControllerで遷移してきた過去のビューはself.navigationController.viewControllers
に保存されています。
ですので、"viewControllers"から戻りたいビューの番号を取り出してビューを前の場所に戻します。
試しに2つ前のビューを取り出してみます。
例:2つ前のビューに戻る
現在のビューから2つ前のビューに戻る際のコードは以下。NSInteger count = self.navigationController.viewControllers.count - 3;
HogeViewController *vc = [self.navigationController.viewControllers objectAtIndex:count];
[self.navigationController popToViewController:vc animated:YES];
NSInteger型変数countに戻りたいビューの番号が入るのですが、ここで、起点となる現在の画面は "-1" になります。よって、2つ前に戻るのであれば、上のコードのように、ここの値は "-3" になります。
他の方法
他の方法でも戻ることができます。やり方は以下のコードになります。
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
上の「2つ以上前に戻る」を簡潔的に書いた形でしょうか。念のため説明を。
遷移してきたビューの階層は配列で管理されてます。上のコードは一番最初に戻るものなんですが、0番目とってきて(objectAtIndex:0)遷移させています。
こちらの方がコードも短くて分かりやすいかもしれませんね。
参考記事
iPhoneアプリ開発 −複数前の画面に戻る− - PPl@ceUINavigationControllerをつかって、今のビューより2つ後ろに戻るには?- ssdkfk
0 件のコメント:
コメントを投稿