0

我整个上午都在尝试解决这个问题,但无济于事。这是我的情况:

我的应用程序中有一个跨两个视图的导航控制器。第一个视图不应旋转远离纵向。第二个视图应该在纵向和横向之间旋转。返回第一个视图应将其发送回纵向。

这是我目前拥有的代码(我已经尝试过但没有成功,所以绝不是可靠的):

应用委托:

- (NSUInteger)application:(UIApplication*)application
supportedInterfaceOrientationsForWindow:(UIWindow*)window
{
    return UIInterfaceOrientationMaskAll;
}

导航控制器:

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}

第一个视图控制器:

-(BOOL)shouldAutorotate
{
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

第二个视图控制器:

-(BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAllButUpsideDown;
}

当前的行为是应用程序将在第一个 VC 上保持纵向,在第二个 VC 上正确旋转,但如果我在横向返回,第一个 VC 处于横向并停留在那里。我怎样才能解决这个问题?

4

1 回答 1

-1

我遇到了同样的问题,据我所知,由于自动旋转的工作方式,您无法修复它。但是,我确实想出了一个解决方法——在横向模式下,我隐藏了导航栏,禁用了点击后退按钮的选项。这可能对你有用,也可能对你不起作用,但如果你想出更好的解决方案,我很想听听。

于 2013-03-25T13:25:39.257 回答