モーダル表示コントローラーを別の表示コントローラーの後に表示し、最初の表示コントローラーを消して表示させる方法を探しています。iPhone - スムーズに2つのモーダル表示コントローラーを表示
問題は、最初のmodalviewcontroller内で行われたdismissコールが両方に適用され、SecondControllerが表示されないことです。
親コールの前後に最初に棄てても何も変わりません。 最初の却下がanimate = NOに設定されていると、すべて正常に機能します。しかし、私はアニメーションが必要です。
私はそうすることを計画しましたが、問題は最初のmodalviewcontroller内で行われた切断呼び出しが両方に適用され、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];
}
第一ModalViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.navigationController dismissModalViewControllerAnimated:YES];
[self.caller thingsDoneInFirstModalController:theResult retval2:someMoreResult];
}
あなたはいくつかと、(最初のものが消えている間に、第2のビューが表示されます作る)これを可能にする方法を知っていますか例えば?
ありがとうございます。
もう少し説明できますか、私はあなたが何を意味するかはわかりません... – Oliver
もう少し答えを教えてください。 – Oliver
まあ、間違っていたようですが、同時に2つのViewControllerをプリセット/ディスマウントすることはできません。これは私が持っているものです2011-01-26 17:38:55.380 test [4415:207] ***キャッチされていない例外 'NSInternalInconsistencyException'のためアプリを終了します、理由: 'をに変更します。 viewDidAppear/viewDidDisAppearが現在の遷移が完了したことを ' –
Max