旋转UIView - 未调用willRotateToInterfaceOrientation

时间:2009-10-17 19:22:10

标签: iphone ios uiview uiviewcontroller

我正在尝试自动旋转视图,我在此处解释了同样的问题: willRotateToInterfaceOrientation not being called

即使我实现了shouldAutorotateToInterfaceOrientation并返回YES,我实现的每个UIViewController子类中也是如此; willRotateToInterfaceOrientation未被调用。

也许有人可以告诉我我错过了什么。我有以下View Controllers结构(我希望这很清楚......):

NavigationController (Programatically) 
     -with root > TabBarController (Programatically) 
                  -with tab item > NavigationController (Programatically)
                                   -with root > UITableViewController (a Subclass) 
                                                -pushed to navigator controller > UIViewController (a Subclass).

我希望有人可以帮助我。提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试通过rootviewcontroller将控制器(NavigationController)插入窗口。

如果不适合您,请使用通知UIApplicationWillChangeStatusBarOrientationNotification

修改

使用:

// custom controller
    TestController *t = [[TestController alloc] init];

    // navigaton
    UINavigationController *controllerinsertIntoTab = [[UINavigationController alloc] initWithRootViewController:t];

    // tab bar
    UITabBarController *tabbarController = [[UITabBarController alloc] init];
    [tabbarController addChildViewController:controllerinsertIntoTab];

    // first navigation
    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:tabbarController];

    [self.window setRootViewController:controller];

特别为您https://github.com/sakrist/TestControllers

我希望它有用

答案 1 :(得分:0)

如果您没有在任何视图控制器中的willAutoRotateToInterfaceOrientation上收到回调,请将视图控制器添加为根视图控制器的子视图控制器。

对于Eg;说self.viewController是您的根视图控制器,childViewController是您想要获得自动旋转回调的视图控制器,添加以下代码行;

[self.viewController addChildViewController:childViewController];

实际上,将子视图控制器添加到任何获得旋转回调的视图控制器也会起作用。

希望它有所帮助。