我已经创建了一个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也就是包含容器视图的视图控制器