2013-01-04 52 views
0

我的根視圖控制器處於縱向模式。我對這個根視圖控制器的按鈕,按鈕的動作代碼如下所示:iOS6中的視圖控制器方向問題

-(IBAction)VideosView 
{ 
    VideosDetailViewController *videoview=[[VideosDetailViewController alloc] initWithNibName:@"VideosDetailViewController" bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:videoview animated:YES]; 
    [videoview release]; 
} 

我想我的VideosDetailViewController是在橫向模式。爲了解決這個問題,我嘗試了很多方法,但都沒有爲我工作。這是我到目前爲止所嘗試的:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscapeLeft; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ 
    return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft); 
} 

但是這對我不起作用。有什麼建議麼?

回答

1

只有根視圖可以在iOS6中設置支持的界面方向,在這種情況下,您的根視圖是導航控制器,因此您的VideosDetailViewController中的supportedInterfaceOrientations方法甚至不會被調用。

解決此問題的一個方法是使用以下方法在UINavigationController上創建一個類別。那麼您的VideosDetailViewController或導航控制器中的當前視圖將被查詢。

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

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

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

其中我用這個方法你的意思是在appdelegate。 – jamil

+0

在Xcode中創建一個新文件,將類型設置爲'Objective-C category',將該類別應用於UINavigationController。並在那裏添加方法。這裏是[類別]的一些背景(http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html) –

+0

oky添加UINavigationController類後現在我用這個代碼VideosDetailViewController - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {returnItem(interfaceOrientation == UIInterfaceOrientationMaskLandscape); } - (NSUInteger)supportedInterfaceOrientations返回UIInterfaceOrientationMaskLandscapeLeft; } - (BOOL)shouldAutorotate { return NO; }但它仍然不適合我。 – jamil

0

您可以針對您的問題使用此方法。它用於自動旋轉功能。

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