0

モーダルである必要がある1番目のVC(ビューコントローラー)があり、1番目のVCが表示されるとすぐに表示される場合もあれば、表示されない場合もある子モーダルVCがあります。したがって、ルートVCから1番目のVCを提示し、1番目のVCの上に子モーダルVCを提示します。ただし、ユーザーには子VCモーダルトランジションのみが表示されます(最初のVCは表示されません)。

AFAIKの最初のVCは、viewDidAppear:の後にのみモーダルVCを表示できます。したがって、viewDidAppear:が呼び出されたときに、最初のVCが既にユーザーに表示されているため、これを可能にする方法がわかりません。

ユーザーに2つのモーダルトランジションを次々に表示させたくはありませんが、最後のモーダルトランジションである子のモーダルトランジションだけを表示します。

ヒントはありますか?

4

3 に答える 3

5

それでも適切な解決策が見つからない場合は、これに対する最も簡単な解決策を見つけました。UINavigationControllerを使用して、モーダルに表示しようとしている2つのネストされたビューコントローラーを保持できます。

モーダルビューを表示することを目的とした関数では、次のようなことができます。

- (IBAction)showView3
{

    ViewController2 *new2 = [[ViewController2 alloc] init];   
    ViewController3 *new3 = [[ViewController3 alloc] init];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:new2];
    nav.navigationBarHidden = YES;
    [nav pushViewController:new3 animated:NO];
    [self presentModalViewController:nav animated:YES];
}

次に、ViewController3で関数を実行して、次のように閉じます。

[self.navigationController popViewControllerAnimated:YES];

そして、ViewController2のものは次のようになります。

[self dismissModalViewControllerAnimated:YES];

これで私が見ることができる唯一の問題は美学です。デフォルトでは、view3からview2への遷移は水平方向のアニメーションですが、view2からview1への遷移は垂直方向です。もちろん、それを変更して、すべてを水平にするか、すべて垂直にするか、または必要に応じて変更することもできます。

于 2012-05-13T01:24:35.500 に答える
1

2つのビューを持つ1つのモーダルビューコントローラーを持つことができます。次に、ViewControllerがロードされたときに表示するビューを選択するだけです。

于 2012-05-11T18:59:41.090 に答える
0

viewWillAppearを含め、presentModalViewControllerを任意の場所に配置できるはずです。

[self presentModalViewController:myModalViewController animated:NO];

編集:これを読んでいる人は、私の他の(正しい)答えを参照してください。これはそうではないからです。

于 2012-05-11T19:00:32.173 に答える