在容器视图中交换VC - childVC不适合Container

时间:2017-02-03 12:56:27

标签: ios swift uicontainerview

最新的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的参考。

1 个答案:

答案 0 :(得分:0)

好的危机结束了。事实证明,我正在为12英寸iPad设计故事板,并以9.7英寸iPad运行。几个视图具有固定的值高度/宽度 - 因此在运行应用程序时外观不稳定。