有两个 View Controller ,MainViewController
和 ChildViewController
,我想将 ChildViewController
添加到 MainViewController
和这个是我的代码:
MainViewController.swift
class MainViewController: UIViewController {
@IBOutlet weak var containerView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
self.add(ChildViewController(), in: containerView)
}
}
ChildViewController.swift
class ChildViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("ChildViewController is loaded")
}
}
UIViewController+Ext.swift
extension UIViewController {
func add(_ child: UIViewController, in container: UIView) {
addChild(child)
container.addSubview(child.view)
child.view.frame = container.bounds
child.didMove(toParent: self)
}
func add(_ child: UIViewController) {
add(child, in: view)
}
func remove(from view: UIView) {
guard parent != nil else {
return
}
willMove(toParent: nil)
removeFromParent()
view.removeFromSuperview()
}
func remove() {
remove(from: view)
}
}
“ChildViewController is loaded
”出现在终端中,但未加载 UI 组件。
最佳答案
self.add(ChildViewController(), in: containerView)
您正在以编程方式创建一个 ChildViewController
实例,而不是从 Storyboard 中获取它。
if let childViewController = self.storyboard?.instantiateViewController(withIdentifier: "ChildViewController") {
self.add(ChildViewController(), in: containerView)
}
关于iOS:添加 subview Controller 不显示子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56414495/