0

我目前正在为 iPad 构建一个应用程序,其中视图结构完全不同,具体取决于设备方向。

当应用程序处于纵向时,我使用 ECSlidingViewController 库来支持左右滑动菜单(如 facebook 或路径)。

当应用程序处于横向时,我需要显示一个 splitviewcontroller,以便始终可见左侧菜单。

有人知道这个问题的最佳解决方案吗?

当检测到方向更改时,我尝试更改 UIWindow 的 RootViewController 但这给出了一些非常奇怪的结果......

4

1 回答 1

1

有几种方法可以做到这一点。有些比其他更好,但主要取决于您的具体情况的需要。

  1. rootViewController如您在轮换期间提到的那样更换。
  2. 在纵向和横向之间旋转时,请始终使用 aUISplitViewController和使用segueto withreplace来替换。detailViewController
  3. addChildViewController:使用/制作一个自定义容器视图控制器,它使用和添加/删除旋转时适当的视图控制器removeFromParentViewController:

选择3的极其粗略的例子。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self.childViewControllers[0].view removeFromSuperView];
    [self.childViewControllers[0] removeFromParentViewController];

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        [self addChildViewController:portraitVC];
        [self.view addSubview:portraitVC.view];
    } else {
        [self addChildViewController:landscapeVC];
        [self.view addSubview:landscapeVC.view];
    }
}

从你所说的,我猜选项 3 将是最合适的。尽管如此,我并不完全相信您需要切换视图控制器,但我不熟悉ECSlidingViewController它提供的内容,所以我不能确定。

于 2013-02-19T15:41:38.193 回答