我怎样才能在iOS 5中使用Embed Segue?

iOS 6引入了Embed Segue,允许在Storyboard中使用自定义容器控制器。 反正有没有为iOS 5复制这个?

这里的挑战是子视图控制器的视图通常被添加为父视图控制器的某个容器视图的子视图。 由于您无法从随机UIView控件中获取segue,因此无法从UIView容器视图创建segue到子场景。 因此,您只需自己编写代码即可。

幸运的是,它只是从View Controller Programming Guide中添加子控制器引用的那四行代码 就个人而言,我甚至可能会略微修改该代码,在我的视图控制器中定义了以下方法:

 - (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来复制function。

在Interface Builder中,我创建了一个自定义segue并将其’class’设置为我的子类(QCEmbedSegue)。 在我的父视图控制器的viewDidLoad ,我调用performSegueWithIdentifier:sender

QCEmbedSegue只是覆盖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/