在我的 Storyboard上,我的项目从一个 Split View开始,该 View 自动将我的自定义 UITableViewController
(嵌入在导航 Controller 中)分配为详细 View Controller (通过关系 segue 完成)。如何从我的自定义 UITableViewController
访问 Split View控件,以便我可以适本地更改主视图 Controller View ?
最佳答案
UIViewController 有一个属性 splitViewController
,它是对 viewController 嵌入其中的 Split View Controller 的引用。由于您的 TableView Controller 嵌入在导航 Controller 中,导航 Controller 本身嵌入在 Split View Controller 中,因此您首先需要获取对导航 Controller 的引用,然后从中获取其对 Split View的引用。
因此,在您的自定义 tableViewController 代码中,您可以这样做:
UISplitViewController *splitVC = [[self navigationController] splitViewController];
您可以从中获得对 masterViewController 的引用。 splitViewController 有一个属性 viewControllers
,它是两个元素的 NSArray。索引为零的元素是主视图 Controller 。索引 1 处的元素是您的详细信息 View Controller 。
UIViewController *masterVC = [[splitVC viewControllers] objectAtIndex:0];
请注意,如果您的 master 是一个自定义的 viewController 子类(它可能是),您应该在将其从数组中拉出时将其强制转换。
如果您想用新的 View Controller 完全替换主视图 Controller ,您可以通过使用新的主 VC 和现有的详细 View Controller 创建一个新数组并将其分配给 Split View Controller 的 viewControllers 来实现
属性:
UIViewController *detailVC = [[splitVC viewControllers] objectAtIndex:1];
NSArray *newViewControllerArray = [NSArray arrayWithObjects:newMasterVC, detailVC, nil];
splitVC.viewControllers = newViewControllerArray;
关于objective-c - 从 uisplitview 更改主视图和详细 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12074554/