【问题标题】:Setting orientation after unwind segue展开 segue 后设置方向
【发布时间】:2014-08-21 10:56:45
【问题描述】:

我在对前一个视图控制器执行展开转场时遇到问题,同时保留前一个视图控制器的首选方向。我已经在 tabbarcontroller、navcontroller 和各种视图控制器中实现了类别来覆盖旋转方法,除了这个问题之外,这些控制器还维护受支持的视图。

我在模态视图控制器上创建了一个按钮,可以展开到前一个控制器。当我在横向状态下按下此按钮时,它会展开到上一个,但在横向状态下,尽管视图控制器的首选/支持的方向是纵向的。

我想执行此展开转场,但不允许它以横向显示控制器(转场回到纵向)。我附上了一段简短的视频来展示我的问题。

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 {
}

【问题讨论】:

  • 尝试向您的supportedInterfaceOrientations 添加一些日志记录或断点,并查看解雇时发生的情况。是否正在征求他们的意见?他们是否返回了您希望他们返回的答案?
  • 顺便说一句,在 iOS 8 this isn't going to work at all 中,似乎,所以您可能想开始摆脱整个模型。
  • 嗨,马特,感谢您的回复,您建议实施哪些方法来为 iOS 8 做准备?我只是想将整个项目中的两个视图控制器强制为所有方向,并将其余部分限制为 tabcontroller>navcontrollers 中的纵向
  • 哎呀,您的链接是超级伪装的,我第一次没有发现它,似乎在 iOS 8 中,您将无法根据您的 cmets 将单个视图控制器限制为特定方向关联。不幸的是,我只是试图从我们的网络服务器显示地图并允许用户偏好方向。以前的视图控制器(drilldown tableviews)在横向上确实没有业务。回到绘图板。有什么专业提示吗?
  • 在 iOS 8 中,您似乎应该具有适应性。毕竟,没有理由不能横向显示表格视图。

标签: ios objective-c uiviewcontroller uitabbarcontroller uistoryboardsegue


【解决方案1】:

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

试试这个:

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

【讨论】:

  • 不确定是谁投了你的反对票,但这种方法只是将状态栏真正定位回视图控制器的顶部,它不会占用 vc 的其余部分。我把这段代码放在 viewdidappear 方法中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多