【发布时间】:2013-02-07 20:24:34
【问题描述】:
我正在尝试遵循上一个问题,以允许导航控制器视图控制器具有不同的方向规则。 Previous Question
例如,我有两个视图控制器,第一个是 Welcome,第二个是 Home。我希望第一个视图控制器只能是 Potrait,第二个(Home)允许端口/风景。
我不确定我是否完全了解如何完成此操作。完成后,我打算创建一个单独的项目来解释如何执行此操作,并将该问题添加到 Github/share 以供将来参考。
在这个特定的项目中,我使用的是侧视图控制器 github 项目。 PPRevealSideViewController。
我的应用委托如下:
// Then we setup the reveal side view controller with the root view controller as the navigation controller
welcomeViewController = [[MESWelcomeViewController alloc] init];
UINavigationController *navController = [[MESNavViewControllerSubClass alloc] initWithRootViewController:welcomeViewController];
self.revealSideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:navController];
[self.revealSideViewController setDirectionsToShowBounce:PPRevealSideDirectionNone];
[self.revealSideViewController setPanInteractionsWhenClosed:PPRevealSideInteractionContentView | PPRevealSideInteractionNavigationBar];
//self.window.rootViewController = welcomeViewController;
self.window.rootViewController = self.revealSideViewController;
[self.window makeKeyAndVisible];
从上面你可以看到我已经将导航控制器子类化为 MESNavViewController。这是我对这个文件的看法:
@interface MESNavViewControllerSubClass : UINavigationController {
BOOL setLandscapeOK;
}
MESNavViewController 的 Imp 文件:
-(void)viewDidLoad {
NSLog(@"subclass called");
}
- (BOOL)shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations
{
if (self->setLandscapeOK) {
// for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
return UIInterfaceOrientationMaskAll;
}
return UIInterfaceOrientationMaskPortrait;
}
在我的第一个(欢迎)视图控制器中,我有以下内容:
-(void)viewWillAppear {
BOOL setLandscapeOK = NO;
}
- (NSInteger)supportedInterfaceOrientations {
// Restriction for the welcome page to only allow potrait orientation
return UIInterfaceOrientationMaskPortrait;
}
在我的第二个(主页)视图控制器中,我只有以下内容:
-(void)viewWillAppear {
BOOL setLandscapeOK = YES;
}
我看到的是导航中的两个视图控制器都允许任何方向。我不确定我是否理解正确。希望我提供了足够的信息。
编辑 ----- 我已经更新了 PPRevealSidePanel 子类,它是最顶层的控制器。然后它持有导航控制器,而导航控制器又持有视图控制器。方向应由显示的视图控制器决定。
PPRevealSidePanel 子类 -
其次,我在实际视图控制器上尝试更新此子类的设置器 setLandscapeOK 时收到错误消息。 登录视图控制器 -
【问题讨论】:
-
你想完成什么?问题是什么?
-
这是在问题“例如,我有两个视图控制器,第一个是 Welcome,第二个 Home。我希望第一个视图控制器只是 Potrait,第二个(Home)允许端口/景观。”
标签: ios ios5 uiviewcontroller uinavigationcontroller orientation