自定义视图控制器的视图布局在添加为子视图时变得错误



我已经创建了一个CustomViewController并在界面构建器中布局。然后我都设置使用CustomViewController的视图作为另一个视图控制器的子视图,但是当我将它添加到另一个视图控制器时,自定义uiviewcontroller的布局变得错误。

是什么原因导致的?正确的做法是什么?

整个项目可以在这里找到https://github.com/agustr/STHLMPubCrawl下载并运行(在iphone 5模拟器中)。如果对它的外观有任何疑问你可以将初始视图指针移动到'place view controller scene '

这是代码:

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("GPPlaceViewController") as? GPPlaceViewController
    if vc != nil{
        vc?.view.layer.borderWidth = 4
        vc?.view.layer.borderColor = UIColor.redColor().CGColor
        self.GPPlaceView.layer.borderColor = UIColor.yellowColor().CGColor
        self.GPPlaceView.layer.borderWidth = 2
        vc?.view.frame.size =  self.GPPlaceView.frame.size
        self.GPPlaceView.addSubview(vc!.view)
    }
    else {
        print("could not load GPPlacePageViewController from storyboard")
    }

欢迎任何帮助

我不确定这种将VC的视图添加到另一个视图的方法是否错误或过时,但我似乎记得它在某些时候工作。我联系了苹果,他们让我使用ContainerView。它应该在这个讲座"实现UIViewController Containment"https://developer.apple.com/videos/wwdc/2011/中有详细的解释。

我在使用包含视图时遇到的最大问题是,你不能在界面构建器中拖动segue,但你必须右键单击或control单击才能将segue指向适当的位置。然后你可以把那个segue当作父视图控制器中的其他segue也就是包含容器视图的视图控制器