适用于iPhone 6 Plus的Split View Controller

时间:2014-10-04 02:16:34

标签: ios objective-c uisplitviewcontroller iphone-6-plus

我希望使用拆分视图控制器使我的应用程序适应iPhone 6+。 目前,我的应用程序是一个简单的表视图,列出了我的文章和详细信息视图。

我想让我的应用在iPhone 6 Plus上以横向模式切换到拆分视图,但我不知道如何正确地做到这一点。

我创建了一个新的故事板并集成了一个拆分视图控制器,之后,我被卡住了。当我点击主视图上的一个单元格(这是一个表格视图)时,我不知道如何将我的新闻推送到详细视图控制器。我试着在didSelectRowAtIndexPath方法中添加它:

[self.navigationController pushViewController:viewController animated:YES];

但是当我这样做时,细节视图被推到拆分视图的左侧部分(主视图)。

我还尝试添加"显示详细信息"在Table View Controller单元格和Detail View Controller之间进行segue,并添加didSelectRowAtIndexPath方法:

[self performSegueWithIdentifier:@"showDetails" sender:self];

但同样的问题,视图被推入主视图。

其他问题,在纵向模式下,默认视图是详细视图。我如何展示主视图?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

在Master视图控制器中,您应该能够使用self.splitViewController访问SplitViewController本身。 SplitViewController有一个属性viewControlers,它是一个包含两个元素的数组:第一个是master的视图控制器,第二个是detail端的视图控制器。在每种情况下,层次结构中的顶层控制器通常是导航控制器。因此,从主控制器(tableView)代码中,您可以使用类似以下内容访问detailController:

UINavigationController *detailNav = self.splitViewController.viewController[1];
[detailNav pushViewController:viewController animated:YES];

在实践中,您可能应该使用比推送更复杂的东西,以避免在主视图中单击不同单元格时堆栈非常庞大。但这应该让你去。此外,使用Apple的模板创建测试主/详细应用程序并分析它们的工作方式。这有一些代码用于在弹出控制器中显示主视图控制器,这是在纵向模式下显示的方式。

答案 1 :(得分:0)

有几个博客在讨论iOS 8上的拆分视图行为时带有示例代码:

Objective C

Swift

非常明确且有用:)