iPhone-以前のModalViewControllerAnimatedの却下:はい、新しいModalViewControllerAnimatedを入力:はい - 失敗

StackOverflow https://stackoverflow.com/questions/4788131

質問

モーダルビューコントローラーをポップするメインウィンドウがあります。このモーダルビューコントローラーで行われると、メインウィンドウに戻り、却下します。次に、メインウィンドウは、Animated = YESを使用して新しいモーダルビューコントローラーをポップします。

問題は、最初のModalViewController内で行われる解雇コールが両方に適用され、SecondControllerが表示されないことです。

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

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];
}

1st ModalViewController.M

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

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

私は何をすることができますか?視界で何もキャッチしたくない....恥ずかしい...

同じナビゲーションコントローラーから呼び出されないため、なぜ解雇されたコリドが却下するのですか?

役に立ちましたか?

解決

その理由は、おそらくアニメーションを却下するときです。を使用して2番目のモーダルウィンドウを表示してみてください performSelector:withObject:afterDelay:, 、から継承された方法 NSObject. 。参照 ここ.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top