添加子视图控制器后,UIView容器消失

时间:2019-04-10 00:31:38

标签: ios swift

我有一个带有两个标签的标签栏控制器。一个是常规的UIViewController,另一个是导航控制器。导航控制器,我可以使用自定义的inputContainerView将另一个视图控制器推入其上,而不会出现问题。但是,当我在第一个选项卡上将NavigationViewController(名称来自mapbox)作为子视图时,自定义inputContainerView不再显示。即使在我从第一个标签中删除了子视图控制器之后。

将孩子添加到标签1

...
    addChild(navigationViewController)
    navigationViewController.view.frame = view.bounds
    view.addSubview(navigationViewController.view)
    navigationViewController.didMove(toParent: self)

}

func navigationViewControllerDidDismiss(_ navigationViewController: NavigationViewController, byCanceling canceled: Bool) {
    navigationViewController.willMove(toParent: nil)
    navigationViewController.view.removeFromSuperview()
    navigationViewController.removeFromParent()
}

标签2

override var inputAccessoryView: UIView? {
    get { return inputContainerView }
}

override var canBecomeFirstResponder: Bool { return true }

我要实现的顺序是在第一个选项卡(从mapbox命名为navigationViewController)中添加一个子视图控制器,然后在第二个选项卡上单击,并在显示inputInputContainerView的情况下推入ui视图控制器。在我在第一个选项卡上添加子视图之前,它显示得很好,但是在那之后消失了

1 个答案:

答案 0 :(得分:0)

这就是文档所说的:

此方法在当前视图控制器和childController参数中的对象之间创建父子关系。将子视图控制器的视图嵌入到当前视图控制器的内容中时,这种关系是必要的。 If the new child view controller is already the child of a container view controller, it is removed from that container before being added.

检查突出显示的部分。