我无法在前一个视图控制器上执行展开segue,同时保留以前的视图控制器首选方向。我已经在tabbarcontroller,navcontroller和各种视图控制器中实现了类别以覆盖旋转方法,除了这一个问题,这些控制器还维护支持的视图。
我在模态视图控制器上创建了一个按钮,该按钮可以展开前一个控制器。当我在横向时按下此按钮时,它会展开到前一个按钮,但在横向上,虽然viewcontroller的首选/支持方向是纵向。
我想执行这个展开segue,同时不允许它将控制器显示为横向(segue回到肖像)。我收录了一段显示我问题的简短视频。
https://www.dropbox.com/s/a5epj9tpmk85cnv/segueproblem.mov
TabBarController.m
@implementation UITabBarController (autoRotate)
- (BOOL)shouldAutorotate {
return [self.selectedViewController shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations {
return [self.selectedViewController supportedInterfaceOrientations];
}
NavController.m
@implementation UINavigationController (autoRotate)
- (BOOL)shouldAutorotate {
return [self.visibleViewController shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations {
return [self.visibleViewController supportedInterfaceOrientations];
}
BViewController.m
@implementation BViewController
- (BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
- (IBAction)unwindToViewControllerNameHere:(UIStoryboardSegue *)segue {
}
CViewController.m
@implementation CViewController
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
- (IBAction)backbutton:(id)sender {
}
答案 0 :(得分:-1)
我认为你不需要很多代码。
试试这个:
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortRait animated:YES];