2012-10-12 44 views
2
正確方法

什麼是傳播shouldAutorotate到iOS6的到shouldAutorotate傳播陷入了深深的情態視圖 - 控制在iOS6的

modal viewcontroller

請看下面的例子中,正確的方法:

  1. 在創建一個新的樣本Tabbed Application的XCode 4.5
  2. Summary,選擇所有方向
  3. 創建一個新的簡單的UITabBarController,例如MyTabBarViewController並添加代碼

    - (BOOL)shouldAutorotate { 
        return YES; 
    } 
    
    - (NSUInteger)supportedInterfaceOrientations { 
        return UIInterfaceOrientationMaskAll; 
    } 
    
  4. 在AppDelegate中,以掛鉤旋轉

    self.tabBarController = [[MyTabBarViewController alloc] init]; 
    
  5. 現在轉動應該工作更換UITabBarControllerMyTabBarViewController,並在FirstViewController,添加代碼在點擊時顯示模態視圖控制器

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    
        UIViewController * viewController2 = [[SecondViewController alloc] 
         initWithNibName:@"SecondViewController_iPhone" bundle:nil]; 
    
        [self presentViewController: [[UINavigationController alloc] 
         initWithRootViewController:viewController2] 
         animated:YES 
         completion:nil]; 
    } 
    

問題:

現在由於SecondViewControllerUINavigationController包裹着,連我都在SecondViewController添加shouldAutorotate,不能讓倒掛旋轉做的權利。

唯一的修復方法是創建自定義UINavigationController並執行shouldAutorotate並且這應該起作用。

但這種方法聽起來很蠢,它要求我通過實施shouldAutorotate解決所有UI類,我不能使用的速記如[UINavigationController alloc] initWithRootViewController...了,我必須實現所有這些UITabBarControllerUINavigationController

有沒有更好的方法?

回答

0

你有沒有嘗試過這樣的:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

這是由設備,其講述的旋轉觀察者發出了通知。當你不再需要時不要忘記移除Observer

0

這不是愚蠢的,它似乎是正確的方式。 您可以創建UINavigationController的子類,並使用 [[MyNavigationController alloc] initWithRootViewController:...]