iOS6引入了嵌入式Segue,允许在情节提要中使用自定义容器控制器。有没有办法在iOS 5上复制这个?
这里的挑战是,子视图控制器的视图通常被添加为父视图控制器的某个容器视图的子视图。由于不能从随机UIView
控件中创建分段,因此无法从UIView
容器视图创建到子场景的分段。因此,您只需要自己编写代码。
幸运的是,这只是视图控制器编程指南中添加子控制器中引用的四行代码就我个人而言,我甚至可能会稍微修改一下代码,在我的视图控制器中定义以下方法:
- (void) displayChildController:(UIViewController*)childController
inContainerView:(UIView *)containerView
{
[self addChildViewController:childController]; // 1
childController.view.frame = containerView.bounds; // 2
[containerView addSubview:childController.view];
[childController didMoveToParentViewController:self]; // 3
}
不过,我已经完成了将活动子控制器从一个场景更改到下一个场景的自定义片段,但它本质上只是上面引用的文档中稍后列出的代码的变体。但这不是嵌入segue的问题,所以在这里与无关
我通过对UIStoryboardSegue进行子类化来复制功能。
在Interface Builder中,我创建了一个自定义segue,并将其"class"设置为我的子类(QCEmbeddSegue)。在父视图控制器的viewDidLoad
中,我调用performSegueWithIdentifier:sender
。
QCEmbeddSegue简单地覆盖perform
:
- (void)perform
{
[self.sourceViewController addChildViewController:self.destinationViewController];
[[self.sourceViewController view] addSubview:[self.destinationViewController view]];
[self.destinationViewController didMoveToParentViewController:self.sourceViewController];
}
http://www.quentamia.com/blog/embed-segue-in-ios-5/