2013-09-23 58 views
2

我有以下控制器,(在iPad上我選擇了所有類型的方向性模式)力控制器改變自己的方向在縱向或橫向

這裏是我的iPad故事板佈局

Custom NavigationController > Loading Ctrl > Main Controller. 

我的自定義導航包含

-(BOOL)shouldAutorotate 
{ 
    return [[self.viewControllers lastObject] shouldAutorotate]; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    return [[self.viewControllers lastObject] supportedInterfaceOrientations]; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; 
} 

在我載入控制器

-(BOOL)shouldAutorotate 
{ 
    return YES; 
} 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    if (UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM()) 
     return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; 
    else 
     return UIInterfaceOrientationMaskPortrait; 
} 

的supportedInterfaceOrientations被稱爲像往常一樣,一切似乎確定,但是當我使用performSegue

-(NSUInteger)supportedInterfaceOrientations 
{ 
    if (UIUserInterfaceIdiomPad == UI_USER_INTERFACE_IDIOM()) 
     return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight; 
    else 
     return UIInterfaceOrientationMaskPortrait; 
} 

在MainController沒有更多的電話把我的主控制器。這是爲什麼?

+0

這個工作對我來說:http://stackoverflow.com/questions/22491786/force-landscape-viewcontroller-in-ios-7/22491787#22491787 –

回答

3

有一招。

從應用程序中獲取狀態欄並旋轉它。

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES]; 

以模態方式創建和顯示並關閉空視圖控制器。

UIViewController *mVC = [[UIViewController alloc] init]; 
[self presentModalViewController:mVC animated:NO]; 
[self dismissModalViewControllerAnimated:NO]; 

現在您的設備已經被迫旋轉。您現在可以繼續使用正確的視圖控制器,或使用導航控制器按下一個控制器。

+0

是不是有幫助? –

+0

然而,這工作,但它使用不推薦使用的函數(提出和解僱) – Jeef

+0

是的,他們被iOS 6取代,並被'presentViewController:animated:completion:'和'willismissViewControllerAnimated:completion:'取代。我還沒有嘗試他們是否工作。如果你試試看,我會很感激你的反饋。 –

1
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ 
return (interfaceOrientation == UIInterfaceOrientationPortrait);//choose portrait or landscape 
} 
- (BOOL) shouldAutorotate{ 
return NO; 
} 
- (NSUInteger) supportedInterfaceOrientations{ 
return UIInterfaceOrientationMaskPortrait;//choose portrait or landscape, same as above 
} 
+0

THNX!是最好的解決方案! – Lito

+0

@ n00bProgrammer哪個方法需要調用 - (void)viewWillAppear:(BOOL)animated – Muju