在我的通用应用程序中,我一开始就有一个主细节。在 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 类。因此,在其中一个方向上,我无法正确查看我的内容,或者我必须将所有内容编码两次,这正是我想要避免的事情。
有什么想法可以解决这个问题吗?
提前致谢