Objective c 如何在IOS8中隐藏UISplitViewcontroller的主视图

Objective c 如何在IOS8中隐藏UISplitViewcontroller的主视图,objective-c,ipad,ios8,uisplitviewcontroller,Objective C,Ipad,Ios8,Uisplitviewcontroller,全部, 我在IOS8 for iPad的新UISplitViewcontroller中遇到了一个问题。我在detailViewcontroller的故事板中有一个UITableView,单击该单元格,我应该转到另一个名为“detailinfo”的视图。我目前正在使用“显示”序列 然而,当前的segue只是推动了正确的部分。我想让它全屏显示,但我不知道怎么做,我尝试使用splitViewController的preferredDisplayMode属性,结果只是隐藏主视图,但没有调整detailV

全部,

我在IOS8 for iPad的新UISplitViewcontroller中遇到了一个问题。我在detailViewcontroller的故事板中有一个UITableView,单击该单元格,我应该转到另一个名为“detailinfo”的视图。我目前正在使用“显示”序列

然而,当前的segue只是推动了正确的部分。我想让它全屏显示,但我不知道怎么做,我尝试使用splitViewController的preferredDisplayMode属性,结果只是隐藏主视图,但没有调整detailView的大小。我不想用礼物作为情态动词

我现在的做法是

        - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([[segue identifier]isEqualToString:@"showStudentDetail"]){

        if(self.traitCollection.horizontalSizeClass != UIUserInterfaceSizeClassCompact){
            UISplitViewController *splitViewController = (UISplitViewController *)self.navigationController.parentViewController;
            splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
        }

    }
}
在ViewDid中,使用

- (void)viewDidAppear:(BOOL)animated {

    if(self.traitCollection.horizontalSizeClass != UIUserInterfaceSizeClassCompact){
        UISplitViewController *splitViewController = (UISplitViewController *)self.navigationController.parentViewController;
        splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic;
    }
}
这将起作用,但masterViewController将“跳出”,这会产生非常糟糕的视觉效果。
希望能得到任何帮助,谢谢

UISplitViewController
是一个由两个子视图控制器组成的复杂视图控制器。因此,当您使用添加到任何子视图控制器的某个segue时,您要求子视图控制器执行segue。该子视图控制器对活动窗口具有部分控制

在您的情况下,您需要请求分割视图控制器执行该序列。因此,您应该将segue添加到处理活动窗口的分割视图控制器中。这样,您将拥有全屏选项

更新

如果你不想使用现在作为模态,并希望避免“跳出”的效果,你可以隐藏主使用动画

UISplitViewController *splitViewController = [self splitViewController];
[UIView animateWithDuration:0.25 animations:^{
    splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden;
} completion:^(BOOL finished) {
    [splitViewController showDetailViewController:vc sender:nil];
}];

是的,我需要让splitviewcontroller执行这个步骤