Я не знаю, что не так с раскадровкой, но моя проблема заключалась в том, что я добавил 5 контейнерных представлений к своему контроллеру основного вида и соединил их всех с их контроллерами представления, так как он представляет их все, а затем закрыл основной видконтроллер.Я удаляю все виды сегментов и контейнеров из раскадровки, и я сделал это так:
private lazy var firstViewController: AvailableView = {
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
var viewController = storyboard.instantiateViewController(withIdentifier: "AvailableViewID") as! AvailableView
self.add(asChildViewController: viewController)
return viewController
}()
private lazy var secondViewController: NotificationView = {
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
var viewController = storyboard.instantiateViewController(withIdentifier: "NotificationViewID") as! NotificationView
self.add(asChildViewController: viewController)
return viewController
}()
private func add(asChildViewController viewController: UIViewController) {
addChild(viewController)
view.addSubview(viewController.view)
viewController.view.frame = view.bounds
viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
viewController.didMove(toParent: self)
}
private func remove(asChildViewController viewController: UIViewController) {
viewController.willMove(toParent: nil)
viewController.view.removeFromSuperview()
viewController.removeFromParent()
}
и способ его использования: в viewDidLoad()
:
add(asChildViewController: firstViewController)
и когда выЕсли вы хотите представить контроллер второго вида, вы должны удалить первый контроллер вида, а затем добавить свой второй контроллер вида следующим образом:
remove(asChildViewController: firsttViewController)
add(asChildViewController: secondViewController)
вы можете увидеть эту ссылку для более подробного объяснения: https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/
hopeпомогать кому-либо еще:)