2011-01-25 12 views
0

モーダル表示コントローラーを別の表示コントローラーの後に表示し、最初の表示コントローラーを消して表示させる方法を探しています。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のビューが表示されます作る)これを可能にする方法を知っていますか例えば?

ありがとうございます。

答えて

0

ダミーのViewControllerを作成して、それを使って2番目のViewControllerを表示してみてください。

+0

もう少し説明できますか、私はあなたが何を意味するかはわかりません... – Oliver

+0

もう少し答えを教えてください。 – Oliver

+0

まあ、間違っていたようですが、同時に2つのViewControllerをプリセット/ディスマウントすることはできません。これは私が持っているものです2011-01-26 17:38:55.380 test [4415:207] ***キャッチされていない例外 'NSInternalInconsistencyException'のためアプリを終了します、理由: 'に変更します。 viewDidAppear/viewDidDisAppearが現在の遷移が完了したことを ' – Max

関連する問題