ContainerView导致打破UIViewController约束

时间:2019-12-10 08:26:23

标签: ios swift uiviewcontroller uicontainerview

我的应用有三个UIViewController()。第一个是EmptyVC,第二个是我的视图,显示了UITableView中的数据。第三个是容器视图,将这些UIViewController()s彼此分开。所有这些都是使用storyboard创建的,只要没有可用数据,容器就会显示EmptyVC,而到了数据时容器就会显示我的UITableView()。以下是我的ContainerVC

class FidelityContainerVC: UIViewController {
    private var presentingVC: UIViewController?
    private var state: State?
    private let fidelityVC = FidelityVC()

    override func viewDidLoad() {
        super.viewDidLoad()
        transition(to: .render(fidelityVC))
        transition(to: .loading)
    }

    func transition(to newState: State) {
        presentingVC?.remove()
        let vc = viewController(for: newState)
        add(vc)
        presentingVC = vc
        state = newState
    }
}

extension FidelityContainerVC {
    enum State {
        case loading
        case render(UIViewController)
    }
}

private extension FidelityContainerVC {
    func viewController(for state: State) -> UIViewController {
        switch state {
        case .loading:
            return EmptyVC()
        case .render(let viewController):
            return viewController
        }
    }
}

AddremoveUIViewController的扩展方法。

extension UIViewController {
    func add(_ child: UIViewController) {
        addChild(child)
        view.addSubview(child.view)
        child.didMove(toParent: self)
    }

    func remove() {
        guard parent != nil else {
            return
        }
        willMove(toParent: nil)
        view.removeFromSuperview()
        removeFromParent()
    }
}

我的问题是,当我将我的EmptyVC添加到ContainerVC约束时,约束被打破了,并且视图不相关。我不明白是什么原因造成的。可能是什么原因,我该如何解决?

0 个答案:

没有答案