从uisplitview更改主视图和详细视图

时间:2012-08-22 13:44:59

标签: objective-c ios xcode ipad uisplitviewcontroller

在我的故事板上,我的项目以分割视图开始,该视图自动将我的自定义UITableViewController(嵌入在导航控制器中)分配为详细视图控制器(由关系segue完成)。如何从我的自定义UITableViewController访问拆分视图控件,以便我可以根据需要更改主视图控制器视图?

1 个答案:

答案 0 :(得分:7)

UIViewController有一个属性splitViewController,它是对viewController嵌入的分割视图控制器的引用。由于您的表视图控制器嵌入在导航控制器中,导航控制器本身嵌入在拆分视图控制器中,因此您首先需要获取对导航控制器的引用,然后从中获取对拆分视图的引用。

因此,在自定义tableViewController的代码中,您可以执行以下操作:

UISplitViewController *splitVC = [[self navigationController] splitViewController];

你可以从中获得对masterViewController的引用。 splitViewController有一个属性viewControllers,它是两个元素的NSArray。索引为零的元素是主viewController。索引1处的元素是您的详细视图控制器。

UIViewController *masterVC = [[splitVC viewControllers] objectAtIndex:0];

请注意,如果你的master是一个自定义的viewController子类(可能是它),你应该把它从数组中拉出来。

如果要完全使用新的viewController重新关联主视图控制器,可以通过使用新的主VC和现有的详细视图控制器创建新数组并将其分配给拆分视图控制器的{{1}来实现。 property:

viewControllers