放松后设置方向

时间:2014-07-01 00:24:48

标签: ios objective-c uiviewcontroller uitabbarcontroller uistoryboardsegue

我无法在前一个视图控制器上执行展开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 {
}

1 个答案:

答案 0 :(得分:-1)

我认为你不需要很多代码。

试试这个:

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortRait animated:YES];