我有一个UINavigationController内的主视图控制器.在那个主视图控制器中,我有一个按钮,用于推送一个内部有UIWebView的详细视图控制器.我希望这个细节视图控制器在加载时处于横向模式.回到主视图控制器,它再次强制返回到纵向模式.我正在运行iOS 6.
我已经看到了其他类似的问题,但它并不适合我.我创建了一个LandscapeViewController,它是UIViewController的子类,我在这里编写了这些方法:
#pragma mark - Orientation Methods
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
- (BOOL)shouldAutorotate
{
return YES;
}
Run Code Online (Sandbox Code Playgroud)
当我按下详细视图控制器时,这是我的代码:
DetailViewController *detailVC = [[DetailViewController alloc]
initWithNibName:@"DetailViewController"
bundle:nil];
[self.navigationController pushViewController:detailVC
animated:YES];
Run Code Online (Sandbox Code Playgroud)
我正在考虑在上面的代码中将我的LandscapeViewController子类化到哪里以使其工作或如何正确地子类化并推送我的详细视图控制器.如果导航控制器无法将我的细节视图控制器从纵向推送到横向,我也可以模态显示我的详细视图控制器.我在哪里做错了?
我在MSNavigationPaneViewController
这里使用并且轮换工作.我已经覆盖了我的根中的旋转方法UINavigationController
-(BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.topViewController != nil) {
return [appDelegate.topViewController supportedInterfaceOrientations];
} else {
return UIInterfaceOrientationMaskPortrait;
}
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.topViewController != nil) {
return [appDelegate.topViewController preferredInterfaceOrientationForPresentation];
} else {
return UIInterfaceOrientationPortrait;
}
}
Run Code Online (Sandbox Code Playgroud)
我推动MSNavigationPaneViewController
使用presentViewController: animated:completion:
,我有旋转工作,所以某些视图可以有不同的方向.问题是,每个具有不同方向的视图都需要用户倾斜手机以更改其锁定在正确方向上的方向.我已经完成了大量的阅读以使其工作,似乎我需要preferredInterfaceOrientationForPresentation
在每个视图加载之前触发,但它不会触发.我认为它没有触发,因为MSNavigationPaneViewController
它没有改变使用的视图控制器presentViewController
.这是用于MSNavigationPaneViewController
更改视图的代码
- (void)setPaneViewController:(UIViewController *)paneViewController
{
if (_paneViewController == …
Run Code Online (Sandbox Code Playgroud)