添加为子视图

时间:2015-09-22 13:49:16

标签: xcode swift layout interface subview

我创建了一个CustomViewController并将其放在界面构建器中。然后我将所有设置为使用CustomViewController的视图作为另一个viewcontroller中的子视图,但是当我将它添加到另一个viewcontroller时,自定义uivewcontroller的布局就会出错。

这会导致什么?什么是这样做的方法?

整个项目可以在https://github.com/agustr/STHLMPubCrawl找到,只需下载并运行(在iphone 5模拟器中)。如果有任何关于它应该如何看的问题你可以将初始视图指针移动到'place view controller cene'

这是代码:

    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")
    }

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

我不确定这种将VC的视图添加到另一个视图的方法是错误的还是过时的,但我似乎记得它在某些时候起作用。我联系了苹果,他们告诉我使用ContainerView。据说这个讲座“实现UIViewController遏制”https://developer.apple.com/videos/wwdc/2011/详细解释。

使用包含视图时遇到的最大问题是您无法在界面构建器中拖动segue,但您必须右键单击或控制单击以将segue指向适当的位置。然后,您可以将父segoutroller中的segue视为包含容器视图的viewcontroller。