Objective c 从uisplitview更改主视图和详图视图
在我的故事板上,我的项目从一个分割视图开始,该视图自动将我的自定义Objective c 从uisplitview更改主视图和详图视图,objective-c,ios,xcode,ipad,uisplitviewcontroller,Objective C,Ios,Xcode,Ipad,Uisplitviewcontroller,在我的故事板上,我的项目从一个分割视图开始,该视图自动将我的自定义UITableViewController(嵌入导航控制器)指定为详细视图控制器(由relationship segue完成)。如何从自定义的UITableViewController访问拆分视图控件,以便可以根据需要更改主视图控制器视图?UIViewController有一个属性splitViewController,该属性是对嵌入viewController的拆分视图控制器的引用。由于表视图控制器嵌入在导航控制器中,而导航控制
UITableViewController
(嵌入导航控制器)指定为详细视图控制器(由relationship segue完成)。如何从自定义的UITableViewController
访问拆分视图控件,以便可以根据需要更改主视图控制器视图?UIViewController有一个属性splitViewController
,该属性是对嵌入viewController的拆分视图控制器的引用。由于表视图控制器嵌入在导航控制器中,而导航控制器本身嵌入在分割视图控制器中,因此首先需要获取对导航控制器的引用,然后从中获取对分割视图的引用
因此,在自定义tableViewController的代码中,您可以执行以下操作:
UISplitViewController *splitVC = [[self navigationController] splitViewController];
从中可以获得对masterViewController的引用。splitViewController有一个属性viewControllers
,它是由两个元素组成的NSArray。索引为零的元素是主viewController。索引1处的元素是详图视图控制器
UIViewController *masterVC = [[splitVC viewControllers] objectAtIndex:0];
请注意,如果主控形状是自定义viewController子类(可能是这样),则在将其从阵列中拉出时应将其转换为自定义viewController子类
如果要使用新的viewController完全重新放置主视图控制器,可以使用新的主视图VC和现有的局部视图控制器创建一个新阵列,并将其指定给拆分视图控制器的viewController
属性:
UIViewController *detailVC = [[splitVC viewControllers] objectAtIndex:1];
NSArray *newViewControllerArray = [NSArray arrayWithObjects:newMasterVC, detailVC, nil];
splitVC.viewControllers = newViewControllerArray;