2009-10-17 48 views
4

我試圖自動旋轉視圖,我在這裏解釋相同的問題: willRotateToInterfaceOrientation not being called旋轉UIView - willRotateToInterfaceOrientation不被稱爲

即使我實施shouldAutorotateToInterfaceOrientation並返回YES,在我執行的每個UIViewController子類中; willRotateToInterfaceOrientation未被調用。

也許有人可以告訴我我錯過了什麼。我有以下視圖控制器結構(我希望這是不夠清楚..):

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

我希望有人能幫助我。提前致謝!

+0

您是否曾經爲此找到答案?我遇到了同樣的問題。 – rein 2010-04-10 10:39:28

+0

這似乎是一個基本的iOS SDK問題。 – Oscar 2011-05-23 03:46:42

回答

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

我希望這是有幫助的

0

如果您在任何視圖控制器中沒有收到willAutoRotateToInterfaceOrientation的回調,請將視圖控制器添加爲您的根視圖控制器的子視圖控制器。

例如;說self.viewController是你的根視圖控制器,childViewController是你想要自動旋轉回調的視圖控制器,添加下面的代碼行;

[self.viewController addChildViewController:childViewController];

事實上,加入作爲子視圖控制器的任何視圖控制器,它得到旋轉回調也可以工作。

希望它有幫助。