2012-09-13 58 views
0

在我的通用应用程序中,我有一个开始时的主要细节。在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类。因此,在其中一种方向中,我无法正确查看我的内容,或者我必须对所有内容进行两次编码,这正是我想避免的。

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

在此先感谢

回答

1

你可以尝试添加一个容器以期在故事板视图控制器内的两个观点。一个是肖像,另一个是景观。将所需的所有控件添加到需要的视图中。当方向改变时 - 隐藏一个并显示另一个。

+0

我尝试过,但我真的无法得到它的工作。我是否必须保留最初加载的第三个视图,然后根据方向添加我的自定义视图? – Bautzi89

+0

您可以将它们都放到容器视图中,也可以将其中一个绑定到控制器上的'view'插座和'portraitView'插座(另一个视图将在此方案中绑定到'landscapeView')。如果您未使用容器视图,那么在方向更改而不是隐藏/显示视图时,必须切换绑定到控制器“视图”出口的视图。 –

+0

感谢您的快速回答,它帮助我继续前进。但是现在我面临着新的问题。你能查看我编辑的问题吗? – Bautzi89

相关问题