当前设计
我目前在故事板上有一个视图控制器,它有一个嵌入式标签控制器和一个嵌入式导航控件。此视图控件还具有容器视图,该视图显示视图,该视图取决于位于导航栏中的分段控件中选择的值。
加载容器视图的视图
容器视图的视图是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;
}
我面临的问题
我遇到的问题是容器视图的一个视图是一个包含照片的集合视图,我需要能够在选择其中一个单元格时推送包含大尺寸图像的视图。
如何在容器视图内的视图中将视图推送到导航控制器?
答案 0 :(得分:2)
你的containerViewController是否嵌入了navigationController?
如果是这样,您只需在self.navigationController
或firstViewController
secondViewController
即可
它会向上遍历parentViewController
链,直到达到UINavigationController
(或子类) - 然后你会在该navigationController上调用 - pushViewController:animated:
。
实际上对于您自己的containerController,您还应该为UIViewController
提供一个类别,为您的容器添加一个简单的getter:
@interface UIViewController (YourContainer)
- (YourContainer *)yourContainer;
@end
@implementation UIViewController (YourContainer)
- (YourContainer *)yourContainer
{
if ([self isKindOfClass:[YourContainer class]]) {
return (YourContainer *)self;
}
UIViewController *parent = self.parentViewController;
while (! [parent isKindOfClass:[YourContainer class]] && parent != nil) {
parent = parent.parentViewController;
}
return (YourContainer *)parent;
}
@end
这将为UINavigationController
和UITabBarController
提供的childViewControllers提供相同的行为。实际上,如果您查看这些类的标题,您会看到它们也通过UIViewController
上的类别提供此功能 - 所以从现在开始,每个childViewController都可以调用self.yourContainer
获取对自定义容器的引用,如果未包含在自定义容器中,则为nil。
答案 1 :(得分:0)
在history feedback item
,
添加导航控制器,
1.选择history feedback item
控制器,
2.从`编辑>嵌入> NavigationController如下图:
现在您的手机/照片选择方法使用
[self.navigationController pushViewController:YourUIViewController animated:YES];