如何将一个导航控制器转换为拆分视图控制器

Posted

技术标签:

【中文标题】如何将一个导航控制器转换为拆分视图控制器【英文标题】:how to convert one navigation controller to a split view controller 【发布时间】:2014-03-17 20:41:54 【问题描述】:

我在 iphone 版本上有一个带有 tableview 的导航控制器。基本上,当我点击表 A 中的某行时,会推送子表视图控制器 A1 或 A2。现在在 iPad 上,我需要在 splitview 控制器中详细显示 A1 或 A2。我应该如何改造它们?它不在根视图控制器中。

我尝试将我的“表 A”视图控制器放在主 VC 中,并将空白导航控制器放在 splitview 中的详细 VC 中,但是我如何告诉详细 VC 在我选择表 A 中的某些行后显示什么?

谢谢...我试过了,但找不到任何解决方案。我以为这很容易。

【问题讨论】:

您可以将表 A 放在拆分视图的左侧。然后在拆分视图的右侧,您可以放置​​一个容器视图,根据在表 A 中选择的内容显示 A1 或 A2。 【参考方案1】:

您是否查看过 Xcode 创建的模板主从项目?它非常清楚地展示了这种方法。具体看看masterViewController的didSelectRowAtIndexPath:方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
        NSManagedObject *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        self.detailViewController.detailItem = object;
    

本质上,您的主视图控制器具有一个属性,该属性包含对您的详细视图控制器的引用。这允许您在需要显示对象时向详细视图控制器发送消息

【讨论】:

以上是关于如何将一个导航控制器转换为拆分视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

交替使用拆分视图控制器和导航控制器作为窗口根视图控制器

拆分视图控制器导航栏的奇怪行为

如何将参数传递给导航控制器内的弹出视图控制器

iPhone 6 Plus 上的拆分视图控制器旋转

更改导航控制器 ios 的转换

导航控制器为空