这就是我所做的。添加部分正在工作,但删除部分却没有:
extension UIViewController {
func add(_ child: UIViewController, containerView: UIView) {
addChildViewController(child)
containerView.addSubview(child.view)
child.didMove(toParentViewController: self)
}
func remove(containerView: UIView) {
guard parent != nil else { return }
willMove(toParentViewController: nil)
removeFromParentViewController()
containerView.removeFromSuperview()
}
}
我尝试更新此代码,该代码最初将添加和删除子视图控制器。但是我想要的是在容器视图中添加和删除。
有人可以指出移除部分有什么问题吗?
答案 0 :(得分:2)
您的add
和remove
应该从同一角度来看。在两种情况下,self
应该是父视图控制器,在两种情况下,self
应该是子视图控制器。现在,您似乎拥有add
为父的self
和remove
为孩子的self
。
这是您的扩展名,self
是两个孩子中的孩子:
extension UIViewController {
func add(_ parent: UIViewController) {
parent.addChildViewController(self)
parent.view.addSubview(view)
didMove(toParentViewController: parent)
}
func remove() {
guard parent != nil else { return }
willMove(toParentViewController: nil)
removeFromParentViewController()
view.removeFromSuperview()
}
}
唯一缺少的部分是将子视图控制器的视图frame
添加到父控制器后对其进行设置。在调用add
之后添加这样的行,或者将框架作为第二个参数添加到add
。
答案 1 :(得分:0)
最好从孩子而不是父母那里考虑
renderToString()
//
$('.type').next().text();