目前,我有我的故事板具有嵌入标签控制器和嵌入式导航控制视图控制器。此视图控件还具有容器视图,该视图显示取决于位于导航栏中的分段控件中所选值的视图。
为用于容器视图容器视图
的观点加载视图是XIB文件(未故事板为基础)和以编程加载:
- (void)viewDidLoad
{
[super viewDidLoad];
// First Controller
self.firstViewController = [[FirstViewController alloc] init];
// Second Controller
self.secondViewController = [[SecondViewController alloc] init];
// Add the controllers to an Array
self.controllers = @[self.firstViewController, self.secondViewController];
// Set the container to show the first view controller on load
[self displayContentController:[self.controllers firstObject]];
}
- (void)displayContentController:(UIViewController *)content
{
[self addChildViewController:content];
content.view.frame = [self frameForContentController];
[self.view addSubview:content.view];
[content didMoveToParentViewController:self];
// Set current controller
self.currentController = content;
}
存在的问题我面对
我遇到的问题是容器视图的其中一个视图是包含照片的集合视图,我需要能够在选择其中一个单元格时以大尺寸推送包含图像的视图。
如何在容器视图内的视图中将视图推送到导航控制器上?
在一个容器视图视图内调用[self.navigationController pushViewController:singleImageController animated:YES]可以完美地工作。谢谢。 – ritch
虽然我很好奇,但在这种情况下为UIViewController设置一个类别会有好处吗?我了解了一些类别,但我只在Objective C中进行了5周的编程。 – ritch
那么,你不必创建一个类别。但我强烈建议您始终为您的自定义容器的孩子提供此功能。想象一下:子A从用户那里接收一个动作,要求你显示子B - 当然,显示子B的逻辑在你的容器类中,但是如何从子A获得对容器的引用来执行显示孩子B的动作? - 在这种情况下,UIViewcontroller类别是最好的方法 - 我希望这个例子不是太混乱;) – Cabus