我有一个带有两个选项卡的选项卡栏 Controller 。一个是常规的 UIViewController,另一个是导航 Controller 。导航 Controller ,我可以使用自定义 inputContainerView 在其上推送另一个 View Controller ,没有任何问题。但是当我将 navigationViewController (来自 mapbox 的名称)作为 subview 放在第一个选项卡上时,自定义 inputContainerView 不再显示。即使我从第一个选项卡中删除了 subview Controller 。
将子项添加到选项卡 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 }
我想要实现的顺序是将一个 subview Controller 添加到第一个选项卡(navigationViewController,从mapbox命名为这个)单击第二个选项卡并推送一个ui View Controller ,并显示inputContainerView。在我在第一个选项卡上添加 subview 之前它显示得很好,但之后就消失了
最佳答案
文档是这样说的:
该方法在当前 View Controller 和childController参数中的对象之间创建父子关系。当将 subview Controller 的 View 嵌入到当前 View Controller 的内容中时,这种关系是必要的。 如果新的 subview Controller 已经是容器 View Controller 的 subview ,则在添加之前将其从该容器中删除。
检查突出显示的部分。
关于ios - 添加 subview Controller 后 UIView 容器消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55603081/