在我的通用应用程序中,我有一个开始时的主要细节。在iPad上,它仅显示为分割视图,当我更改界面方向时,自动调整功能可以正常工作。但在iPhone上,这在我的详细视图中不够好。所以我想为我的DetailViewController有两个不同的视图,它们应该具有完全相同的功能,但我无法真正地使它正常工作。我试图使用两个视图控制器,但这并没有真正做到这一点。顺便说一句,我正在使用故事板。iOS:如何在故事板中的横向和纵向视图之间切换?
我以为我找到了一个解决方案,通过添加两个视图到我的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类。因此,在其中一种方向中,我无法正确查看我的内容,或者我必须对所有内容进行两次编码,这正是我想避免的。
有什么想法可以解决这个问题吗?
在此先感谢
我尝试过,但我真的无法得到它的工作。我是否必须保留最初加载的第三个视图,然后根据方向添加我的自定义视图? – Bautzi89
您可以将它们都放到容器视图中,也可以将其中一个绑定到控制器上的'view'插座和'portraitView'插座(另一个视图将在此方案中绑定到'landscapeView')。如果您未使用容器视图,那么在方向更改而不是隐藏/显示视图时,必须切换绑定到控制器“视图”出口的视图。 –
感谢您的快速回答,它帮助我继续前进。但是现在我面临着新的问题。你能查看我编辑的问题吗? – Bautzi89