iPhone-备用横向视图问题

iPhone-备用横向视图问题,iphone,modal-dialog,landscape,alternate,Iphone,Modal Dialog,Landscape,Alternate,我遇到了横向模式问题,我找不到出路。基本上,我有一个选项卡栏应用程序,在第一个选项卡中有导航控制器。在此导航控制器中,第一个视图包含带有项的表,单击该项后,将推送描述该项的详细视图 我需要为列表视图和细节视图实现横向模式,但对于列表视图,我通常需要为横向模式使用不同的视图控制器,比如封面流。局部视图只是更改方向,在这种情况下不需要使用备用视图控制器 根据Apple提供的备选视图示例,我试图通过为列表视图控制器实现模态视图控制器来实现这种行为。当我在列表视图中时,这可以很好地工作。当我将设备切换到

我遇到了横向模式问题,我找不到出路。基本上,我有一个选项卡栏应用程序,在第一个选项卡中有导航控制器。在此导航控制器中,第一个视图包含带有项的表,单击该项后,将推送描述该项的详细视图

我需要为列表视图和细节视图实现横向模式,但对于列表视图,我通常需要为横向模式使用不同的视图控制器,比如封面流。局部视图只是更改方向,在这种情况下不需要使用备用视图控制器

根据Apple提供的备选视图示例,我试图通过为列表视图控制器实现模态视图控制器来实现这种行为。当我在列表视图中时,这可以很好地工作。当我将设备切换到横向模式时,正确显示封面流视图控制器。当我显示细节视图时会出现问题。当我更改设备方向时,盖流再次显示。我所期望的是,只有当列表视图出现在屏幕上时,才会显示封面流。无论NC堆栈上当前有什么VC,模态视图控制器似乎总是可见的

在我看来,将模态VC表示为特定VC的横向视图并不适用于多个导航级别

我还尝试将横向视图作为子视图添加到视图控制器视图中。使用此解决方案时,我对导航级别没有问题,但这里的问题是,在横向模式下,选项卡栏并没有隐藏。我需要隐藏封面流的标签栏,这是通过展示模态VC实现的

我将非常感谢在这个问题上的任何帮助


非常感谢

在细节视图控制器中,您可以完全使用我最近的一个项目中的类似代码来设置不同的视图:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toOrientation 
                                duration:(NSTimeInterval)duration
{
    if ([graphView superview]) {
        if (toOrientation == UIInterfaceOrientationPortrait ||
            toOrientation == UIInterfaceOrientationPortraitUpsideDown) {
            [graphView removeFromSuperview];
        }
    } else {
        if (toOrientation == UIInterfaceOrientationLandscapeLeft ||
            toOrientation == UIInterfaceOrientationLandscapeRight) {
            [[self view] endEditing:YES];
            [[self view] addSubview:graphView];
        }       
    }
}
现在要隐藏选项卡栏,当您在风景中时有点困难,但可以:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    UIInterfaceOrientation toOrientation = self.interfaceOrientation;

    if ( self.tabBarController.view.subviews.count >= 2 )
    {
        UIView *transView = [self.tabBarController.view.subviews objectAtIndex:0];
        UIView *tabBar = [self.tabBarController.view.subviews objectAtIndex:1];

        if(toOrientation == UIInterfaceOrientationLandscapeLeft ||
           toOrientation == UIInterfaceOrientationLandscapeRight) {                                     
            transView.frame = CGRectMake(0, 0, 480, 320 );
            tabBar.hidden = TRUE;
        }
        else
        {                               
            transView.frame = CGRectMake(0, 0, 320, 480);         
            tabBar.hidden = FALSE;
        }
    }
}
对于这个项目,我添加了一个名为graphView的视图,我希望在且仅在处于横向模式时显示该视图,然后我希望隐藏tabbar。我想这听起来和你想要的很像

我预见到的唯一潜在问题是,如果在推送细节视图之前进入横向模式,事情可能会变得不稳定。因此,您可能希望在列表视图控制器中使用这些方法。这个特殊的问题从来没有出现在我身上,但在我意识到它没有实际意义之前,我就考虑过了