0

私はこの階層を行っているアプリを構築しています:

view1controller(presentmodalviewcontroller メソッドを呼び出します)-->view2controller(presentmodalviewcontroller メソッドを呼び出します)-->view3controller(presentmodalviewcontroller を呼び出します)--->view4controller

私は、dismissmodalviewcontroller メソッドを使用して、あるビューから別のビューにいつでも切り替えることができるという概念を知っています。ビュー 4 からビュー 3 に、ビュー 3 からビュー 2 に切り替えることができます。ビュー 4 からビュー 2 へ、またはビュー 3 からビュー 1 へのように? ..そして、ナビゲーションコントローラーを使用していません。私は概念が欠けていることを知っています。誰でもこのコンセプトに光を当てることができますか?

4

4 に答える 4

1

リファレンスガイドより UIViewController

複数のビュー コントローラーを連続して提示し、提示されたビュー コントローラーのスタックを構築する場合、スタック内の下位のビュー コントローラーでこのメソッドを呼び出すと、その直接の子ビュー コントローラーと、スタック上のその子の上のすべてのビュー コントローラーが破棄されます。これが発生すると、最上位のビューのみがアニメーション形式で閉じられます。中間のView Controllerはスタックから単純に削除されます。最上位のビューは、そのモーダル遷移スタイルを使用して閉じられます。これは、スタック内の下位にある他のビュー コントローラーで使用されるスタイルとは異なる場合があります。

于 2012-05-25T09:29:47.157 に答える
1
    AppDelegate *delegate_app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
ABC:;
    NSUInteger iRan = arc4random() % [delegate_app.viewcontrollerArray count];

    if ([(UIViewController *)[delegate_app.viewcontrollerArray objectAtIndex:iRan] isEqual:self]) 
    {
        NSLog(@"self so not taken");
        goto ABC;
    }

    [self presentModalViewController:(UIViewController *)[delegate_app.viewcontrollerArray objectAtIndex:iRan] animated:YES];    

viewcontrollerArray が割り当てられ、AppDelegate ですべてのビュー コントローラーと合成されます。

于 2012-05-25T09:40:54.513 に答える
0

一度に1つのモーダルだけを保持する必要があると思います。表示したくないものはアニメーションなしで閉じます。

最初のモーダル:

[view1controller presentViewController:view2controller animated:YES]

2番目のモーダルに移動します。

[presentingViewController dismissModalViewControllerAnimated:NO]
[presentingViewController presentViewController:view3controller animated:YES]

3番目のモーダルに移動します。

[presentingViewController dismissModalViewControllerAnimated:NO]
[presentingViewController presentViewController:view4controller animated:YES]

最初のモーダルに戻ります。

[presentingViewController dismissModalViewControllerAnimated:NO]
[presentingViewController presentViewController:view1controller animated:YES]

複数のネストされたモーダルビューコントローラーが確実に必要な場合は、それらを逆の順序で閉じて、一度に複数を表現し、最後の1つだけをアニメーション化する必要があります。したがって、1から4に移動するには、アニメーションなしで2と3を提示してから、4番目のアニメーションを提示する必要があります。逆に行くと、アニメーションありの4とアニメーションなしの3&2を却下します。この種のシナリオでは、ナビゲーションコントローラーimhoを使用する方がよいでしょう(ナビゲーションバーを表示する必要はありません)。

詳細については、この質問を参照してください

于 2012-05-25T10:02:41.527 に答える
0

3 番目のビューから 1 番目のビューまたはそれに類似したビューに移動する場合は、次のコードを試すことができます。

[self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES];
于 2012-05-25T09:41:48.943 に答える