-2

我有一个显示 VC2 的 ViewController VC1a:

VC1a -> presentViewController: VC2

是否可以将 VC1a 更改为 VC1b,以便在调用 dissmissViewControllerAnimated 时动画到 VC1b 而不是 VC1a?

我问的原因是因为我想返回到不同的屏幕,而不是动画回到 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 回答
0

好的,我实现了一个带有两个孩子的容器视图控制器 - 一个用于纵向,一个用于横向,这解决了我的问题。

我花了几天时间试图弄清楚如何在 iOS6 中正确处理旋转,但我没有意识到从 UINavigationController 推送时旋转 UITableViewController 存在错误。

感谢@paulrehkugler 的回复-当我问这个问题时,我变得非常绝望。在从主视图呈现 UINav/TableViewControllers 时,似乎没有任何很好的例子来说明如何处理方向变化。我当然不想实施这样的黑客攻击。

于 2013-10-23T22:45:57.490 回答