SwipeNavigationController
является UIViewController
и может быть помещен в стек или представлен так же, как любой другой UIViewController
. Везде, где вы создаете и представляете BlueViewController
, вы должны вместо этого создать SwipeNavigationController
в качестве объекта верхнего уровня, который содержит BlueViewController
и все контроллеры вида направления. BlueViewController
и все остальные направления не должны ничего знать о SwipeViewController
. BlueViewController
и все остальные направления не должны ничего знать друг о друге. SwipeNavigationController
является контроллером представления верхнего уровня, все контроллеры представления, связанные с направлением, являются его дочерними контроллерами. Я предполагаю, что у вас есть навигационный контроллер где-то в потоке, который выдвигает SwipeNavigationController
. В этом случае у вас будет что-то подобное в любом методе, который вы хотите запустить. Я назвал это nextTapped
, но я уверен, что это будет что-то другое в вашем коде:
func nextTapped() {
let swipeNavigationController = SwipeNavigationController(centerViewController: BlueViewController())
swipeNavigationController.topViewController = PinkViewController()
swipeNavigationController.bottomViewController = PurpleViewController()
swipeNavigationController.leftViewController = GreenViewController()
swipeNavigationController.rightViewController = OrangeViewController()
navigationController?.pushViewController(swipeNavigationController, animated: true)
}
А затем удалите все из viewDidLoad
в BlueViewController
, кроме строки, которая устанавливает цвет фона. Это создает SwipeNavigationController
со всеми контроллерами направленного вида, сохраняя BlueViewController
в качестве центра, а затем помещает его в стек контроллера вида. Если у вас нет UINavigationController
в контроллере представления, который отображается до SwipeNavigationController, вы можете представить его модально, заменив последнюю строку следующим:
present(swipeNavigationController, animated: true, completion: nil)