6

私は3つのviewControllerを持っています

ファースト、セカンド、サード

セカンドからオープンサードまで

Third *third = [[Third alloc]initWithNibName:@"Third" bundle:nil];
[self presentModalViewController:third animated:YES];
[third release];

ここで、3 番目から 1 番目に戻りたいと思います。次に、次のコードで viewDidAppear を設定します。

[self dismissModalViewControllerAnimated:NO];

しかし、1 秒間 Second が表示されますが、それを見たくありません...どうすればよいですか?

4

3 に答える 3

15

最初に3番目のViewControllerを閉じ、次に2番目のViewcontrollerを閉じる必要があります。最初のViewControllerに移動する場合は、次のコードを実行します。

-(void)goToFirstView{
        UIViewController *vc = [self parentViewController];
   //     UIViewController *vc = [self presentingViewController]; //ios 5 or later
        [self dismissModalViewControllerAnimated:NO];
        [vc dismissModalViewControllerAnimated:YES];
 }
于 2012-04-18T17:16:58.123 に答える
5

そもそも、3 番目のモーダル ビューはどのように却下されているのでしょうか。おそらく、ユーザーが「完了」ボタンに触れたことによるものでしょうか? その場合、両方を閉じたいボタンのハンドラーにあります。

次のように両方を却下できます。

[self dismissModalViewControllerAnimated: YES];
[self.presentingViewController dismissModalViewControllerAnimated: NO];
于 2012-04-18T16:09:04.237 に答える
0

これは、ビューが表示される前に毎回 viewDidAppear が呼び出されるため、ビューが表示されたらすぐにそれを閉じると消えます..

あなたがやろうとしていることはmodalViewControllersで達成できるとは思いません...代わりにnavigationControllerを使用し、ビューコントローラーをスタックに追加し続け、最初のビューコントローラーに移動したい場合は呼び出すだけです

 [self.navigationController popToRootViewControllerAnimated:YES];    

EDIT:

これは、委任を使用することで実現できると考えただけで、2 番目を 3 番目のデリゲートにし、3 番目のコントローラーを閉じるとすぐに、デリゲートにメッセージを送信します。このメッセージ呼び出し[self dismissModalViewControllerAnimated:NO];で..完了です.. (委任を知っています。)

于 2012-04-18T16:41:00.687 に答える