我想将childViewController添加到parentViewController的自定义UIView部分。但是,如果我正在self.customView.addSubview(childViewController.view)
,我看不到childViewController.view
,因为它没有被添加。相比之下,如果我做self.view.addSubview(childViewController.view)
这一切都运作良好。有人可以解释为什么会这样吗?我真的需要将childViewController.view添加为customView的子视图,而不是self.view
的一部分。
if let childViewController = self.storyboard?.instantiateViewController(withIdentifier: "ChildVC") as UIViewController? {
self.addChildViewController(childViewController)
childViewController.view.frame = customView.bounds
self.customView.addSubview(childViewController.view)
childViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
childViewController.didMove(toParentViewController: self)
childViewController.view.frame = CGRect(x: customView.frame.origin.x,
y: customView.frame.origin.y,
width: customView.frame.width,
height: customView.frame.height)
}
答案 0 :(得分:1)
如何使用Object Library中的容器视图(将表视图,textView和所有UI组件拖到我们的故事板上的位置)。
容器视图定义包含的视图控制器区域 子视图控制器
只是覆盖这是您的父视图控制器
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let identifier = segue.identifier {
switch identifier {
case "SegueIndetifierName":
(segue.destination as? YourChildViewController)?.parentViewControllerObject = self
default:
break
}
}
}
注意:在您的子视图控制器中声明parentView控制器对象,如下所示
weak var parentViewControllerObject: ParentViewController!
唯一标识子和父之间的关系。并且你的工作将自动完成。
答案 1 :(得分:1)
您可以查看示例工作项目以添加子视图
链接https://github.com/RockinGarg/Container_Views.git
必填代码:
要添加为子视图的类对象
private func add(asChildViewController viewController: UIViewController)
{
// Configure Child View
viewController.view.frame = CGRect(x: 0, y: 0, width: self.firstContainer.frame.size.width, height: self.firstContainer.frame.size.height)
// Add Child View Controller
addChildViewController(viewController)
viewController.view.translatesAutoresizingMaskIntoConstraints = true
// Add Child View as Subview
firstContainer.addSubview(viewController.view)
// Notify Child View Controller
viewController.didMove(toParentViewController: self)
}
将ParentView添加为子视图
firstContainer
其中: -
viewController
是父视图,其中要添加子视图
this.storeList.next(m);
类对象,其视图将添加为Subview
注意 - 这可以在containerViews和Normal UIView中使用,以便将Controller添加为子视图