iOS Master Detail,如何在iPad中使用不同的DetailViewController

iOS Master Detail,如何在iPad中使用不同的DetailViewController,ipad,uitableview,uistoryboard,uisplitviewcontroller,uistoryboardsegue,Ipad,Uitableview,Uistoryboard,Uisplitviewcontroller,Uistoryboardsegue,我有一个主细节iOS应用程序,由标准XCode模板和故事板构建而成。我需要在大多数项目上显示一个带有浏览器的视图,并且在用户单击主控形状的UITableView中的“设置”项目时显示一个设置窗体(使用FXForms) 我在iPhone上找到了一种方法,但在iPad上找不到。在iPhone情节提要中,我创建了另一个视图控制器,并从主视图控制器到新视图控制器建立了另一个segue连接。然后在didSelectRowAtIndexPath if(indexPath.section == 0 &

我有一个主细节iOS应用程序,由标准XCode模板和故事板构建而成。我需要在大多数项目上显示一个带有浏览器的视图,并且在用户单击主控形状的UITableView中的“设置”项目时显示一个设置窗体(使用FXForms)

我在iPhone上找到了一种方法,但在iPad上找不到。在iPhone情节提要中,我创建了另一个视图控制器,并从主视图控制器到新视图控制器建立了另一个segue连接。然后在
didSelectRowAtIndexPath

if(indexPath.section == 0 && indexPath.row == 2) // settings
    [self performSegueWithIdentifier:@"showSettings" sender:self];
else
    [self performSegueWithIdentifier:@"showDetail" sender:self];
这样,当我单击“设置”时,“设置”视图就就位了。来回导航也很有效

然而,在iPad中,detailViewController似乎总是在SplitViewController的右侧。如何修改情节提要和/或代码以将默认视图切换为设置,然后再次切换回


我还发现,XCode中的默认模板为iPad情节提要创建了“关系”序列,iPhone情节提要中没有这种类型,不能像我在iPhone案例中那样命名为“showSettings”或“showDetail”。

从对原始帖子的评论中,我发现:

  • 如果我的目标是iOS8,我可以在iPhone和iPad上使用相同的故事板,然后我可以使用“替换”segues(现在称为“显示细节”segues)切换到另一个细节视图。非常方便,但是iOS 7还没有

  • 对于iOS 7,我可以使用segues来支持iPhone,而对于iPad,我必须这样做(如果我使用的是整洁的库来显示带有选项的视图,则使用FXForms)

  • 因此,我的iPad代码(在
    -(void)tableView:(UITableView*)tableView中为特定行选择了rowatindexpath:(nsindepath*)indepath
    )。我备份了
    self.splitViewController.viewControllers
    的当前lastObject,以便在Master中还原表视图的其他行

    FXFormViewController *controller = [[FXFormViewController alloc] init];
    IBSettingsForm *settingsForm = [[IBSettingsForm alloc] init];
    settingsForm.fontSize = 12;
    controller.formController.form = settingsForm;
    
    // this is created so that my new view would have a navigation bar    
    UINavigationController *navigationController  = [[UINavigationController alloc] init];
    [navigationController pushViewController:controller animated:false];
    
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:[self.splitViewController.viewControllers objectAtIndex:0],
        navigationController, nil];
    

    您是否可以选择对两者使用相同的故事板?您根本不想要SplitView,还是只是试图替换SplitView而不是SplitView的一部分?XCode在标准主细节示例中为iPhone和iPad创建了两个不同的故事板。我不认为iPhone可以共享同一个故事板,因为iPhone中的主控细节就像从一个全屏视图切换到另一个,而iPad使用的是“侧边栏”——类似于主控。我想找到一种方法,在iPad上替换SplitView的一部分。使用XCode 6,你可以在iPhone和iPad上使用单一情节提要,如果你的目标是iOS8,你甚至可以在iPhone和iPad上使用UISplitViewController。@SachinPalewar-如果在iPhone上使用UISplitViewController,可能不再是主细节。我将通过更换detailViewController进行更多测试,并在本期文章中提供解决方案。谢谢。我还做了一个多细节的样品,你可以看看。