-2

VC2 を提示する ViewController、VC1a があります。

VC1a -> presentViewController: VC2

dissmissViewControllerAnimated が呼び出されたときに VC1a ではなく VC1b にアニメーション化されるように、VC1a を VC1b に変更することは可能ですか?

私が尋ねる理由は、VC1a にアニメーションを戻さずに別の画面に戻りたいからです。これは、ポートレート/ランドスケープの変更に関連しています。

4

2 に答える 2

0

警告。これは、ユーザーにとって悪い/混乱を招く UI の選択となる可能性があります。しかし、もしあなたがしなければならないなら...

がフォアグラウンドにある間に、 をVC1a内部に配置UINavigationControllerしてナビゲーション スタックを変更できる場合があります。VC2何かのようなもの:

// in VC1a.m

[self presentViewController:VC2 animated:YES completion:^{
    NSMutableArray *navigationStack = [[NSMutableArray alloc] init];
    for (UIViewController *viewController in self.navigationController.viewControllers)
    {
        if (viewController != self.navigationController.viewControllers.lastItem)
        {
            [navigationStack addObject:viewController];
        }
        else
        {
            VC1b *viewControllerToSwapIn = [[VC1b alloc] init];
            // probably some more initialization here
            [navigationStack addObject:viewControllerToSwapIn];
        }
    }
    self.navigationController.viewControllers = navigationStack;
}];

またはおそらくより良いアイデア:

// in VC1a.m

[self presentViewController:VC2 animated:YES completion:^{
    VC1b *viewControllerToSwapIn = [[VC1b alloc] init];
    // probably some more initialization here
    [navigationStack addObject:viewControllerToSwapIn];

    [self.navigationController popViewControllerAnimated:NO];
    [self.navigationController pushViewController:viewControllerToSwapIn animated:NO];
}];
于 2013-10-17T23:32:04.760 に答える