0

「シングルビューアプリケーション」Xcodeテンプレートに基づくアプリを作成しました。ナビゲーションコントローラーとrootViewControllerがあります。

私がrootViewControllerにいるとき、

[self presentModalViewController:nextModalViewController animated:YES];

新しいViewControllerはでアニメーション化されます。

私の問題はこれです。私は多くのviewControllersを順番に提示しました。

A > B > C > D

つまり、presentModalViewControllerを使用してAからBを提示し、BからCを提示しました。はい、viewController間で遷移する特別なアニメーションがあり、[self.navigationController push .. ..を使用できないため、presentModalViewControllerを使用する必要があります。

私の質問は、ナビゲーションスタックに関してpresentModalViewControllerを使用するとどうなりますか?提示されているコントローラーはスタックにプッシュされていますか?特定の時間に提示されたすべてのnavigationControllersへの参照を取得する方法はありますか?そのナビゲーションスタックのようなもの?つまり、私がDにいて、Dの前に表示されているすべてのコントローラーのリストを取得したいとします。

プロパティを作成して渡すことができることはわかっています。それを行うiOS上にすでに構築されているものがあるかどうか疑問に思っています。

ありがとう。

4

2 に答える 2

1

iOS 5以降でUIViewControllerpresentingViewController、レシーバーを表示するビューコントローラーを返すプロパティがあります。iOS 4以前でparentViewControllerは、提示されたView Controllerのプロパティを使用して、提示されたViewControllerにアクセスします。したがって、たとえば、これらのプロパティに適切にアクセスすることにより、DからCビューコントローラにアクセスできます。詳細については、ドキュメントを参照してください。

チェーンのようにすべてのViewControllerにアクセスする場合は、次のように実行できます。

UIViewController *node = self;
while (node != nil) {
    // do something with the view controller, then skip to its parent
    node = node.presentingViewController;
    // or node = node.parentViewController; in iOS 4 or older
}
于 2012-10-17T14:59:48.160 に答える
-1

その後、モーダルプレゼンテーションのたびに、UINavigationControllerからプロパティのサイズを確認し、サイズがviewControllers大きくなるかどうかを確認します。

UIViewController *theControllerYouWant = [self.navigationController.viewControllers objectAtIndex:(theIndexOfYourViewController)];
于 2012-10-17T15:00:12.543 に答える