Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从uisplitview更改主视图和详图视图_Objective C_Ios_Xcode_Ipad_Uisplitviewcontroller - Fatal编程技术网

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;