通过自定义Segue将ViewController嵌入到容器视图中(有点像替换segues)

时间:2014-05-01 13:07:45

标签: ios uiviewcontroller uisplitviewcontroller uistoryboardsegue uicontainerview

到目前为止,我正在使用UISplitViewController构建我的应用程序。要为masterView添加隐藏功能(向左移出屏幕),我创建了一个自定义视图控制器,其中包含两个容器视图窗体masterView和detailsView。事情按预期工作。

现在在某个地方我使用了替换segue来替换细节视图。这就是问题所在。如何创建一个自定义segue,将viewController嵌入到容器视图中,就像替换segue一样?

1 个答案:

答案 0 :(得分:2)

我通常会创建一个这样的自定义segue:

@interface MyCustomSegue:UIStoryboardSegue

@end
@implementation MyCustomSegue

- (void)perform {

    UIViewController* src = (UIViewController*) self.sourceViewController;
    MyViewControllerClass* dst = (MyViewControllerClass*) self.destinationViewController;
    [src addChildViewController:dst];
    [src.view addSubview:dst.view];

    //This line uses FLKAutolayout library to setup constraints
    [dst.view alignToView:src.view];
}
@end

然后您应该能够在故事板中绘制自定义segue(在绘制线条后释放鼠标按钮时,它应显示在segue菜单中)。

这是我能想到的最简单的方法,您可以自定义源视图控制器以具有自定义容器视图(而不是src.view)和对目标视图控制器的引用。 您也可以编写自定义AutoLayout约束代码而不是使用FLKAutoLayout(这是非常棒的BTW)。