我的应用有三个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
}
}
}
Add
和remove
是UIViewController
的扩展方法。
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
约束时,约束被打破了,并且视图不相关。我不明白是什么原因造成的。可能是什么原因,我该如何解决?