最新的Swift / XCode / iOS。
好的,我正试图在容器视图中更换Child VC。我已经阅读了几篇描述如何操作的帖子,他们非常乐于助人。但是,我似乎遇到了一个我可以解决的约束问题。
我有一个包含一些容器视图的主VC。一个Container包含几个按钮(就像一个标签栏)。当您点击按钮时,另一个“详细信息”容器中的视图控制器会更改子VC。代码如下:
@IBAction func ToBioPage(_ sender: UIButton) {
//SET RIGHT PANE VIEW TO BIO PAGE
//INSTANTIATE NEW VC
let vc = storyboard?.instantiateViewController(withIdentifier: "Biography")
//REMOVE OLD VC
detailPaneVCReference?.willMove(toParentViewController: nil)
detailPaneVCReference?.view.removeFromSuperview()
detailPaneVCReference?.removeFromParentViewController()
//ADD NEW VC
ParentVC?.addChildViewController(vc!)
vc?.view.frame = (detailContainerView?.bounds)!
detailContainerView?.addSubview((vc?.view)!)
//ADD CONSTRAINTS
//TOP ANCHOR
vc?.view.topAnchor.constraint(equalTo: (vc?.view.superview?.topAnchor)!).isActive = true
//BOTTOM ANCHOR
vc?.view.bottomAnchor.constraint(equalTo: (vc?.view.superview?.bottomAnchor)!).isActive = true
//LEADING ANCHOR
vc?.view.leadingAnchor.constraint(equalTo: (vc?.view.superview?.leadingAnchor)!).isActive = true
//TRAILING ANCHOR
vc?.view.trailingAnchor.constraint(equalTo: (vc?.view.superview?.trailingAnchor)!).isActive = true
vc?.didMove(toParentViewController: ParentVC)
}
详细信息容器的VC换掉了,但我无法完全适应新的容器。 Child VC跑过屏幕的底部和右侧。上面添加的约束的存在似乎没有任何区别。无论他们是否存在,我都得到相同的结果。我期待frame = bounds代码行,以确保子代完全适合Detail Container。
我错过了什么/做错了什么?
编辑:抱歉,我忘了提及“detailPaneVCReference”是对嵌入式segue中抓取的Container View中的起始VC的引用。 “detailContainerView”是对Container View本身的引用,也是在嵌入segue期间抓取的。 “ParentVC”是以同样方式获取的MasterVC的参考。
答案 0 :(得分:0)