UINavigationController で、あるビューコントローラーのひとつ前まで戻る : Objective-C プログラミング
PROGRAM
UINavigationController で、あるビューコントローラーのひとつ前まで戻る
UINavigationController では、トップのルートビューコントローラーや、指定したビューコントローラーまで戻る機能が用意されています。
予め用意されている機能については UINavigationController で次のビューコントローラーに進める で記しましたが、それ以外の、たとえば指定したビューコントローラのひとつ前まで戻りたい場合には、次のようにして実装することができました。
// 指定したビューコントローラーが何番目に位置しているかを取得します。
NSUInteger index = [self.navigationController.viewControllers indexOfObject:aViewcontroller];
// ビューコントローラーが見つかって (index != NSNotFound)、それがルートビューコントローラーでなければ (index > 0)、ひとつ前のビューコントローラーを取得します。
if (index != NSNotFound && index > 0)
{
// ひとつ前のビューコントローラーを取得します。
UIViewController* backViewController = [self.navigationController.viewControllers objectAtIndex:(index - 1)];
// その、ひとつ前のビューコントローラーに戻ります。
[self.navigationController popToViewController:backViewController animated:YES];
}
このように、ナビゲーションコントローラーの viewControllers を使って、目的のビューコントローラーを探します。
viewControllers は UIViewController の配列で、ルートビューコントローラーが 0 番目に、現在表示されているビューが最後にと、順序よく整列されているので、それを辿ることで、目的のビューコントローラーを見つけることができます。
[ もどる ]