モーダルビューコントローラーを次々に表示し、最初のコントローラーが消えている間に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番目のビューが表示されるようにする)、たとえばコードを使用しますか?
ありがとうございました。