Здесь будет иерархия, в которой первый виртуальный виртуальный канал представляет второй виртуальный виртуальный канал
let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
present(vc, animated: true, completion: nil)
present(vc, animated: true, completion: nil)
второй виртуальный виртуальный канал добавит третий виртуальный виртуальный канал в качестве подпредставления и сделает его видимым
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let vc = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ThirdVC") as! ThirdVC
self.addChild(vc)
self.view.addSubview(vc.view)
}
при отклонении третьего виртуального контейнера удаляет егосупер просмотр с анимацией и показ второго VC
UIView.animate(withDuration: 0.5, animations: { [weak self] in
self?.view.frame = CGRect(x: 0, y: self?.view.frame.height ?? 0.0, width: self?.view.frame.width ?? 0.0, height: self?.view.frame.height ?? 0.0)
}, completion: { [weak self] _ in
self?.view.removeFromSuperview()
})
отклонение второго VC и показ первого VC
dismiss(animated: true, completion: nil)