Stu*_*rtM 7 orientation uiviewcontroller uinavigationcontroller ios ios5
我试图遵循先前的问题,允许导航控制器视图控制器具有不同的方向规则.上一个问题
所以例如,我有两个视图控制器,第一个是欢迎第二个主页.我希望第一个视图控制器只能是Potrait而第二个(Home)允许Port/Landscape.
我不确定我完全理解如何完成这个.一旦我这样做,我打算创建一个单独的项目,解释如何执行此操作并添加到Github/share上的问题以供将来参考.
在这个特定的项目中,我使用侧视图控制器github项目.PPRevealSideViewController.
我的app代表如下:
// 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];
Run Code Online (Sandbox Code Playgroud)
从上面你可以看到我将导航控制器子类化为MESNavViewController.这是我对此文件的负责人:
@interface MESNavViewControllerSubClass : UINavigationController {
BOOL setLandscapeOK;
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
在我的第一个(欢迎)视图控制器中,我有以下内容:
-(void)viewWillAppear {
BOOL setLandscapeOK = NO;
}
- (NSInteger)supportedInterfaceOrientations {
// Restriction for the welcome page to only allow potrait orientation
return UIInterfaceOrientationMaskPortrait;
}
Run Code Online (Sandbox Code Playgroud)
在我的第二个(Home)View控制器中,我只有以下内容:
-(void)viewWillAppear {
BOOL setLandscapeOK = YES;
}
Run Code Online (Sandbox Code Playgroud)
我所看到的是导航中的两个视图控制器都允许任一方向.我不确定我是否理解正确.希望我提供了足够的信息.
编辑-----我更新了PPRevealSidePanel子类,它是最顶级的控制器.然后,它保持导航控制器,导航控制器又控制视图控制器.方向应由显示的视图控制器决定.
PPRevealSidePanel子类 -

其次,我在实际的视图控制器上尝试更新此子类的setter setLandscapeOK时收到错误.登录视图控制器 -

| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |