iOS:如何在故事板中切换横向视图和纵向视图?

时间:2012-09-13 07:45:00

标签: ios storyboard landscape uiinterfaceorientation portrait

在我的通用应用程序中,我在开头有一个主要细节。在iPad上它只是显示为拆分视图,当我更改界面方向时,自动调整工作正常。但是在iPhone上,这在我的细节视图中效果不佳。所以我想为我的DetailViewController提供两个不同的视图,它们应具有完全相同的功能,但我无法让它正常工作。我尝试使用两个视图控制器,但这并没有真正完成这项工作。顺便说一句,我正在使用故事板。

我以为我通过向DetailViewController添加两个视图找到了解决方案。然后我只需检查当前方向并设置最近的视图:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    Video *currentVideo = [[self.xmlParser videos] objectAtIndex:indexPath.row];

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
        [self.detailViewController setDetailItem:currentVideo];
    else {

        if (!self.detailViewController) {

            DetailViewController *nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"];
            if ([UIDevice currentDevice].orientation == UIDeviceOrientationPortrait)
                [nextController setView:nextController.portraitView];
            else
                [nextController setView:nextController.landscapeView];
            [nextController setDetailItem:currentVideo];
            [self.navigationController pushViewController:nextController animated:YES];
        }        
    }
}

这应该是应有的,但现在我面临另一个问题。这两个视图包含完全相同的出口,但我只能将其中任何一个的出口连接到我的DetailViewController类。因此,在其中一个方向上,我无法正确查看我的内容,或者我必须将所有内容编码两次,这正是我想要避免的内容。

我有什么想法可以解决这个问题吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以尝试在容器视图中将两个视图添加到Storyboard中的视图控制器。尺寸一个是肖像,另一个是景观。将所需的所有控件添加到所需的视图中。当方向改变时 - 隐藏一个并显示另一个。