在app中仅更改一个UIViewController的UIInterfaceOrientation

我有一个iPhone应用程序的结构,如“导航控制器与表 – >下一个视图控制器与表 – > QLPreviewController”。 通过在第一视图控制器(带导航控制器)中的表格单元格中出现新视图控制器与另一个表格,通过点击它的单元格显示QLPreviewController。

例如:在第一个表中有组,在第二个表中 – 所选组的文档和用于预览所选文档的QLPreviewController。

我的应用程序中的每个ViewController必须仅以纵向(非上部)方向显示,但QLViewController还必须支持横向(左侧和右侧)。

我在QLPreviewController出现之前将标志canRotate设置为YES。 在AppDelegate中if canRotate == YES我为任何Orientation返回YES,以旋转QLPreviewController。 方法previewControllerWillDismiss中的QLPreviewControllerDelegate:(QLPreviewController *)控制器设置标志canRotate返回NO。 但是如果在QLPreviewController解除之前方向是Landscape,那么我的所有ViewController都会保持在Landscape方向…

如何在WillDismiss方法中将ViewController旋转回纵向?

我在我的应用程序(它或多或少像你的应用程序)上所做的是:

1)为两个屏幕设置shouldRotate Yes

2)对于第一个视图,设置以下掩码:

 return UIInterfaceOrientationMaskPortrait 

对于第二个View put:

 return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscape;