ios - 添加 subview Controller 后 UIView 容器消失

标签 ios swift

我有一个带有两个选项卡的选项卡栏 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/

相关文章:

c# - 如何将此 VB.net/C# 代码移植到 Objective-C/iOS?

ios - UI线程中长时间运行的任务

ios - 检测通过 Linphone 传入的音频

swift - 无法将类型 'String' 的值转换为预期的参数类型

ios - 将 AVPlayerViewController 嵌入到 UIView 中

swift - 如何在 Firebase 中检索 UID 和自动 ID 下的数据 Swift

jquery - 使用 webkitTransitionEnd 编码

iphone - 如何使用 UITapGestureRecognizer 同时检测点击和双击?

ios - 拉动刷新表时崩溃

iphone - 使用 UIView animateWithDuration 进行动画处理时无法触摸 UIButton