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 番目に、現在表示されているビューが最後にと、順序よく整列されているので、それを辿ることで、目的のビューコントローラーを見つけることができます。

[ もどる ]