VC2 を提示する ViewController、VC1a があります。
VC1a -> presentViewController: VC2
dissmissViewControllerAnimated が呼び出されたときに VC1a ではなく VC1b にアニメーション化されるように、VC1a を VC1b に変更することは可能ですか?
私が尋ねる理由は、VC1a にアニメーションを戻さずに別の画面に戻りたいからです。これは、ポートレート/ランドスケープの変更に関連しています。
VC2 を提示する ViewController、VC1a があります。
VC1a -> presentViewController: VC2
dissmissViewControllerAnimated が呼び出されたときに VC1a ではなく VC1b にアニメーション化されるように、VC1a を VC1b に変更することは可能ですか?
私が尋ねる理由は、VC1a にアニメーションを戻さずに別の画面に戻りたいからです。これは、ポートレート/ランドスケープの変更に関連しています。
警告。これは、ユーザーにとって悪い/混乱を招く 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];
}];