【发布时间】:2017-06-20 20:41:15
【问题描述】:
最新的 Swift/XCode/iOS。
好的,我正试图在容器视图中换掉子 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)
}
Detail Container 的 VC 换掉了,但我无法让新的 VC 完全适合。 Child VC 跑过屏幕的底部和右侧。上面添加的约束的存在甚至似乎没有什么不同。无论它们是否存在,我都会得到相同的结果。我期待 frame = bounds 代码行来确保孩子完全适合细节容器。
我错过了什么/做错了什么?
编辑:对不起,我忘了提到“detailPaneVCReference”是对容器视图中起始 VC 的引用,在嵌入 segue 期间抓取。 “detailContainerView”是对 Container View 本身的引用,也是在嵌入 segue 期间抓取的。 “ParentVC”是对以相同方式抓取的 MasterVC 的引用。
【问题讨论】:
标签: ios swift uicontainerview