我有iPAD app,它有UIViewController A作为根视图导航控制器的控制器。 现在我还有3个View Controllers B,C,D作为ViewController A的子视图。
我希望B不响应方向,而C和D应该响应它。
目前,所有代码都会响应方向更改。
另一个答案是说两个单独的根ViewControllers并将它们添加到windows View中。其中一个非旋转和其他旋转。我不能这样做,因为我在ViewController A中有标题,它切换B,C,D使它们成为前面的viewController。
无论如何请建议。
由于
答案 0 :(得分:1)
你需要像这样继承UINavigationController。
·H
#import <UIKit/UIKit.h>
@interface UINavigationController (Rotation)
- (BOOL)shouldAutorotate;
- (NSUInteger)supportedInterfaceOrientations;
@end
.M
#import "UINavigationController+Rotation.h"
@implementation UINavigationController (Rotation)
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
if ([self visibleViewController] && [[self visibleViewController] isKindOfClass:[B class]]) {
return UIInterfaceOrientationMaskAll;
}
return UIInterfaceOrientationMaskPortrait;
}
@end
答案 1 :(得分:0)
您可以从UINavigationController创建子类或为其创建类别。并实现这些方法:
-(BOOL)shouldAutorotate
{
return [self.topViewController shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
然后,在您的控制器中,您应该使用您想要的方向来实现此方法。