5

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

4

2 回答 2

9

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

幸运的是,这只是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
}

不过,我已经完成了将活动子控制器从一个场景更改为下一个场景的自定义 segues,但它本质上只是上述参考文档中稍后列出的代码的一种变体。但这不是一个嵌入 segue 问题,所以这里不相关

于 2013-02-05T19:48:27.853 回答
-1

我通过继承 UIStoryboardSegue 来复制功能。

在 Interface Builder 中,我创建了一个自定义 segue 并将其类设置为我的子类 (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/

于 2013-02-05T19:26:46.247 回答