【问题标题】:Two ViewControllers Orientation两个 ViewControllers 方向
【发布时间】:2012-05-28 05:46:03
【问题描述】:

我想出了一个奇怪的场景,我在 MainWindow.xib 中使用了一个 NavigationViewController 和一个 ViewController(命名容器)。

NavigationController 加载后续视图,同时,另一个 ViewController(容器)在所有内容之上加载一些图像 - 无论 NavigationViewController 显示什么视图。

当我旋转设备时,NavigationController 的后续视图会按预期旋转,但容器及其后续视图不会旋转。

这是我的 MainWindow.xib 的截图

这是代码。

在.h中

UINavigationController *navigationController;
IBOutlet UIViewController *container;

在 .m 中(ApplicationDidFinishLaunchingWithOptions)

[window addSubview:navigationController.view];
[window addSubview:container.view];
[window makeKeyAndVisible];

我还尝试创建一个单独的类并将其分配给 viewController。 (它的 ViewDidLoad) 方法触发,但它没有出现在 (ShouldRotateToInterfaceOrientation) 中

我在某处读到 IOS 不支持多个 ViewController 的方向。

【问题讨论】:

    标签: ios uinavigationcontroller orientation mainwindow


    【解决方案1】:

    我认为你应该尝试这个,因为你试图在一个导航中使用拖视图。所以不要制作窗口的子视图,制作主视图的子视图,如:-

    [window addSubview:navigationController.view];
     [navigationController.view addSubview:container.view];
    [window makeKeyAndVisible];
    

    我没有尝试过这段代码,但我只是提出想法。 谢谢。

    【讨论】:

    • 谢谢,试过了,问题解决了。虽然我不得不为那个 ViewController(容器)使用一个额外的类来让事情正常工作。
    • 虽然这行得通,但由于 Apple 明确表示不这样做,因此以后可能无法继续工作,您很可能会遇到与事件传递等相关的其他问题......
    【解决方案2】:

    除非您使用容器视图,否则屏幕上应该只有一个 viewController。

    请参阅class reference实现容器视图控制器部分。

    非常简短的版本是您需要创建自己的容器,然后使用它们描述的方法将两个视图控制器添加到其中:

    以下是您可能需要调用的基本方法:

    • addChildViewController:
    • removeFromParentViewController
    • transitionFromViewController:toViewController:duration:options:animations:completion:
    • willMoveToParentViewController:
    • didMoveToParentViewController:

    【讨论】:

    • 谢谢,我看到了类参考,发现它需要对我现有的代码进行相当大的重新设计。对于那些想要实现这一点的人必须阅读:类参考链接中的处理视图旋转。再次感谢。
    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2022-09-29
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多