2

私の質問は次のようになります:別のモーダルビュー内のiPhoneモーダルビュー?別のモーダルビューコントローラー内からモーダルビューコントローラーをプッシュできますか?ただし、1つの違いがあります。

私のコントローラーはどれもUINavigationControllersではありません(私はそれらが呼ばれているものだと思います)。

だから基本的に私はこれを持っています:

RootView(経費の提出、カレンダーの確認などのさまざまなオプション)->経費の提出が選択され、次のコードが呼び出されます。

EXP = [[ExpensesViewController alloc] initWithNibName:@"ExpensesViewController" bundle:nil];

    [self presentModalViewController:EXP animated:YES];

これで、メインビューの上に1つのモーダルビューがあります。次に、経費モーダルビュー内で、モーダルビューを開くボタンを選択できるようにしたいと思います(同様のコードで)...

上記のイントロの2つの質問から、これを行うには基本的に次のようになります。

[controllerA presentModalViewController:Number2 animated:YES];

代わりに次のようになりますか?

[self.view presentModalViewController:Number2 animated:YES];

ビューコントローラの新しいインスタンスを作成せずにビューコントローラを参照する方法がわからないためです。

また、最初のモーダルビューに戻ることができるように、2番目のビューを却下するときが来たら(基本的に、モーダルビューを開いて経費を提出し、フォームの一部として、選択肢を選択する必要があります-UIの目的で新しいモーダルビューが最適です。選択を決定したら、追加の詳細モーダルビューを閉じて経費ビューに戻り、経費を送信します。送信すると、そのモーダルビューが閉じます)。

したがって、使用する代わりに:

[self dismissModalViewControllerAnimated:YES];

それは:

[self.view dismissModalViewControllerAnimated:YES];

??

みんなありがとう:)

4

2 に答える 2

2

UIViewControllerモーダルビューコントローラを提示できるのは、そのサブクラスのみです。インスタンスであり、まったく異なるものですself.viewUIView

作業の割り当てを節約するには、次の2つのルールに従う必要があります。

  1. 次のように、ViewControllerから新しいモーダルViewControllerのみを提示します[self presentModal…];
  2. 次のように、表示されているビューコントローラからモーダルビューコントローラのみを閉じます[self dismiss…];

このようにして、各ViewControllerの所有権と責任を明確に把握できます。また、私がほとんどどこでも見た方法は[self.super dismiss…];、ビューコントローラを閉じるためにトップが使用する方法はiOS5では壊れます。

于 2011-08-02T13:24:49.233 に答える
0

ここではデリゲートパターンを使用する必要があります。ルートビューコントローラを最初のデリゲートにし、最初のビューコントローラを2番目のデリゲートにします。

却下する場合は、デリゲートメソッドを呼び出してから、自己参照を使用してビューを却下できます。

したがって、2番目のビューコントローラでは[delegate dismissTheView]、最初に実装され[self dismissModalViewControllerAnimated];、最後のビューに到達するまで同じものを逆方向に呼び出して追跡する呼び出しを行います。

于 2011-08-02T13:25:22.807 に答える