在容器视图中交换 VC - 子 VC 不适合容器
Swapping VC's in a Container View - childVC does not fit Container
最新Swift/XCode/iOS.
好的,我正在尝试在容器视图中换出 Child VC。我已经阅读了几篇描述如何做到这一点的帖子,它们非常有帮助。但是,我似乎遇到了一个我可以解决的约束问题。
我有一个包含一些容器视图的主控 VC。一个容器包含几个按钮(就像一个标签栏)。当您点击一个按钮时,另一个 "Detail" 容器中的视图控制器会更改 Child 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 换掉了,但我无法让新的完全适合。 Child VC 穿过屏幕的底部和右侧。上面添加的约束的存在似乎甚至没有什么不同。无论它们是否存在,我都会得到相同的结果。我期待 frame = bounds 代码行以确保 child 完全适合 Detail Container。
我missing/doing哪里错了?
编辑:抱歉,我忘了说 "detailPaneVCReference" 是对容器视图中起始 VC 的引用,在嵌入转场期间抓取. "detailContainerView" 是对容器视图本身的引用,也是在嵌入转场期间获取的。 "ParentVC" 是对 MasterVC 以相同方式抓取的引用。
好的,危机结束。结果我在故事板中设计了 12 英寸 iPad 和 运行 作为 9.7 英寸 iPad。几个视图具有固定值 heights/widths - 因此当 运行 应用时出现不稳定的外观。
最新Swift/XCode/iOS.
好的,我正在尝试在容器视图中换出 Child VC。我已经阅读了几篇描述如何做到这一点的帖子,它们非常有帮助。但是,我似乎遇到了一个我可以解决的约束问题。
我有一个包含一些容器视图的主控 VC。一个容器包含几个按钮(就像一个标签栏)。当您点击一个按钮时,另一个 "Detail" 容器中的视图控制器会更改 Child 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 换掉了,但我无法让新的完全适合。 Child VC 穿过屏幕的底部和右侧。上面添加的约束的存在似乎甚至没有什么不同。无论它们是否存在,我都会得到相同的结果。我期待 frame = bounds 代码行以确保 child 完全适合 Detail Container。
我missing/doing哪里错了?
编辑:抱歉,我忘了说 "detailPaneVCReference" 是对容器视图中起始 VC 的引用,在嵌入转场期间抓取. "detailContainerView" 是对容器视图本身的引用,也是在嵌入转场期间获取的。 "ParentVC" 是对 MasterVC 以相同方式抓取的引用。
好的,危机结束。结果我在故事板中设计了 12 英寸 iPad 和 运行 作为 9.7 英寸 iPad。几个视图具有固定值 heights/widths - 因此当 运行 应用时出现不稳定的外观。