模态 UINavigationController - 我无法停止旋转
Posted
技术标签:
【中文标题】模态 UINavigationController - 我无法停止旋转【英文标题】:Modal UINavigationController - I cant stop rotation 【发布时间】:2012-11-11 17:11:53 【问题描述】:我正在使用情节提要,并且在 UITabBarController 中嵌入了 UINavigationController。 我推送一个视图控制器,然后从这个视图控制器中我呈现一个带有 UIViewController 的 MODAL UINavigationController。
问题是,当我在模态视图之前的所有视图都不能旋转时,模态视图控制器可以旋转。 如何停止允许任何旋转的模态导航控制器?
我已尝试添加:
-(NSUInteger)supportedInterfaceOrientations
return UIInterfaceOrientationMaskPortrait;
和
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return (interfaceOrientation == UIInterfaceOrientationPortrait);
谢谢
【问题讨论】:
您是否尝试过编辑 info.plist?使用支持的界面方向。 我对不同的视图使用其他方向,我只需要限制这个视图。 @Darren 在这里你应该选择相同的 ...***.com/questions/13023936/orientation-issue-in-ios-6/…。您可能会对此有所了解 我刚尝试更改 plist,但后来我的一些其他视图崩溃了 感谢 iOS 开发人员,我刚刚尝试过,但不幸的是 VC 仍在旋转 :( 【参考方案1】:尝试分类 UINavigationController
@implementation UINavigationController (Rotation_IOS6)
-(BOOL)shouldAutorotate
return [[self.viewControllers lastObject] shouldAutorotate];
-(NSUInteger)supportedInterfaceOrientations
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
【讨论】:
非常危险 - 一个类别将取代一个方法的初始实现,而您不知道UINavigationController
的方法中应用了哪些其他逻辑。更好的解决方案是创建您自己的 UIViewController
抽象子类(例如称为 MyAbstractViewController
),其中包含您答案中的方法,并且无论何时您想要查看,不要子类 UIViewController
,而是子类 MyAbstractViewController
。
这行得通。我用这些方法创建了一个 UINavigationController 子类,并将它用作模态视图之后的 NavController 类。这些和 TabController 中的那些都被调用,但它们使它工作。 deanWombourne,不确定这是否会起作用,因为将方法添加到 VC 不起作用。
@deanWombourne 子类化 UIViewController 不起作用。子类化 UINavigationController 确实如此。不过我同意,这个类别是危险的,子类是要走的路。
如果它有一个模型视图控制器.....,所以我建议使用 self.visibleViewController xxxx以上是关于模态 UINavigationController - 我无法停止旋转的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController 自定义模态过渡,导航栏太小
模态 UINavigationController - 我无法停止旋转
UINavigationController 按钮在模态呈现之前 layoutIfNeeded 时消失
呈现模态后 UINavigationController 布局损坏