0

2 つのビュー コントローラーを使用してアプリケーションを作成しています。最初のビューで作業しているときに、「設定」ボタンを使用して別のビューに移動する可能性があり、このボタンに接続されたメソッドは次のようになります。

-(IBAction)Settings:(id)sender{

[self presentModalViewController:settingsHandle animated:YES];

settingsHandle は、最初のビューが読み込まれたときに割り当てられる 2 番目のビュー クラスのオブジェクトです。

私の問題は、私が2番目のビューにいるときに始まり、NSTimerオブジェクトを含むメソッドを呼び出します。このメソッドは、うーん、たとえば 30 秒の間動作しますが、5 分になることもあります。このメソッドの結果は、別のビューで 3 番目のビューを呼び出しています。

2番目のビューでこの関数の結果を待っている間、すべてがうまくいきます.結果は、私が3番目のビューにいるということです.

メソッドが機能しているときに、( を使用して) 2 番目のビューから最初のビューに移動すると、[self dismissModalViewControllerAnimated:YES];( NSLOG を使用して) メソッドが終了したことがわかりますが、[self presentModalViewController:thirdview animated:YES];機能していません。何も起こりません。

要約すると:

2 番目のビューで結果を待機中 (アップロードされた 3 番目のビューに成功) 1 番目のビューで結果を待機中 (何も起こらない失敗)

そして、私の目標は、最初のビューからそれを実現することです!

4

1 に答える 1

0

却下されたModalViewControllerから を提示することはできません。ViewControllerしたがって、目に見えるものを追跡し、そこからViewController呼び出す必要presentModalViewControllerがあります。あなたのシナリオでは、最も簡単な解決策はNSTimer、最初に呼び出しを次のViewControllerようにすることです

- (void)presentViewController:(NSTimer *)timer
{
    if(self.modalViewController == nil)
        [self presentModalViewController:settingsHandle animated:YES];
    else
        [self.modalViewController presentViewController];
}

2. で NSTimer を作成する場合ViewController、もちろん最初の . への参照が必要になりますViewController。この参照を次のように渡すことができます

-(IBAction)Settings:(id)sender{
    settingsHandle.myParentViewController = self; //You need to create this var in settingsHandle
    [self presentModalViewController:settingsHandle animated:YES];
    //...
}
于 2012-06-19T22:28:06.350 に答える