UIViewController有一个属性splitViewController
,它是指viewController嵌入的分割视图控制器的引用。由于您的表格视图控制器嵌入在导航控制器中,而导航控制器本身又嵌入在分割视图控制器中,因此您需要先获取对导航控制器的引用,然后从中获取其对分割视图的引用。
因此,在自定义tableViewController的代码中,您可以这样做:
UISplitViewController *splitVC = [[self navigationController] splitViewController]
你可以通过获取一个对masterViewController的引用来进行操作。splitViewController有一个名为viewControllers
的属性,它是一个包含两个元素的NSArray。索引为零的元素是master viewController,索引为1的元素是你的detail view controller。
UIViewController *masterVC = [[splitVC viewControllers] objectAtIndex:0]
请注意,如果您的主视图控制器是自定义的视图控制器子类(这很可能是),则在从数组中提取它时,应将其转换为相应的类型。
如果您想要完全替换主视图控制器为新的视图控制器,则可以通过创建一个包含新主VC和现有详细视图控制器的新数组,并将其赋值给您的分割视图控制器的
viewControllers
属性来实现。
UIViewController *detailVC = [[splitVC viewControllers] objectAtIndex:1];
NSArray *newViewControllerArray = [NSArray arrayWithObjects:newMasterVC, detailVC, nil];
splitVC.viewControllers = newViewControllerArray;