0

モーダルビューコントローラーを次々に表示し、最初のコントローラーが消えている間に2番目のコントローラーを表示できるようにする方法を探しています。

問題は、最初のmodalviewcontroller内で実行されたdismiss呼び出しが両方に適用され、SecondControllerが表示されないことです。

親呼び出しの前または後に最初の却下を行っても、何も変わりません。最初の却下がanimate=NOに設定されている場合、すべてが正常に機能します。しかし、私はアニメーションが必要です。

私はこの方法でそれを行うことを計画しましたが、問題は、最初のmodalviewcontroller内で行われたdismiss呼び出しが両方に適用され、SecondControllerが表示されないことです。

各モーダルビューには独自のナビゲーションコントローラーがあり、衝突しないようにする必要があるため、理由がわかりません。

0.5秒後にNSTimerを使用して2番目のモーダルビューを表示することで別の方法を試しましたが、満足のいくものではありません。2番目のモーダルビューは、最初のビューが完全に消えたときに表示されます。まったくスムーズではありません...遅延を0.5秒未満に設定すると、2番目のモーダルビューが表示されません。そして、そのようなタイマーを使用してこれを作成することは、コーディングの良い方法ではないようです。

Main.m

- (void) entry {

    FirstController *nextWindow = [[FirstController alloc] initWithNibName:@"theNIB" bundle:nil];

    nextWindow.caller = self;

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow];

    [self.navigationController presentModalViewController:navController animated:YES];

    [nextWindow release];
    [navController release];
}


- (void) thingsDoneInFirstModalController:(OBJECT)returnValue retval2:(OBJECT2)returnValue2 {
    [self display2ndController];
}

- (void) display2ndController {

    SecondController *nextWindow;

    nextWindow = [[SecondController alloc] initWithNibName:@"NIB2" bundle:nil];

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow];
    [self.navigationController presentModalViewController:navController animated:YES];
    [navController release];
    [nextWindow release];
}

1番目のModalViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [self.navigationController dismissModalViewControllerAnimated:YES];
    [self.caller thingsDoneInFirstModalController:theResult retval2:someMoreResult];
}

これを可能にする方法を知っていますか(最初のビューが消えている間に2番目のビューが表示されるようにする)、たとえばコードを使用しますか?

ありがとうございました。

4

1 に答える 1

0

ダミーの ViewController をいくつか作成してみて、それを使用して 2 つ目の ViewController を提示してください。

于 2011-01-25T16:33:33.650 に答える