4

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

4

1 回答 1

8

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

因此,在您的自定义 tableViewController 的代码中,您可以这样做:

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

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

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

请注意,如果您的 master 是一个自定义 viewController 子类(它可能是),那么当您将其从数组中拉出时,您应该将其转换为这样。

如果您想用新的 viewController 完全替换主视图控制器,您可以通过使用新的主 VC 和现有的详细视图控制器创建一个新数组并将其分配给拆分视图控制器的viewControllers属性来实现:

UIViewController *detailVC = [[splitVC viewControllers] objectAtIndex:1];
NSArray *newViewControllerArray = [NSArray arrayWithObjects:newMasterVC, detailVC, nil];
splitVC.viewControllers = newViewControllerArray;
于 2012-08-22T14:36:01.443 回答