Как переключить/обновить контроллер просмотра, используя один контроллер просмотра?

введите здесь описание изображения

введите здесь описание изображения

скажем, у меня есть 6 разных viewController с разным содержимым внутри и один mainViewController. И MainViewcontroller содержит collectionView, и когда одна из его ячеек выбрана, я хотел бы иметь еще один автономный ViewController, который обрабатывает функцию обновления и переключения на соответствующие (в данном случае 6 разных контроллеров) viewControllers. У меня есть до сих пор реализовал метод showSegue для StoryBoard, однако он работает, но я думаю, что это не совсем чистый и самый правильный способ, так как моря в StoryBoard выглядят немного запутанными с этим методом. Может ли кто-нибудь объяснить или провести меня через это, как это сделать ..?


person letsCode    schedule 07.06.2020    source источник


Ответы (1)


На мой взгляд, вам следует избегать размещения множества контроллеров представления в одной раскадровке. Я предпочитаю использовать шаблон координатора. Вот пример: https://www.hackingwithswift.com/articles/71/how-to-use-the-coordinator-pattern-in-ios-apps

В своих проектах я использую одну раскадровку для каждого ViewController, и у меня есть координатор, к которому я могу получить доступ из любого места в приложении. Это делает ваш код очень гибким. Попробуйте...

person Nico S.    schedule 07.06.2020
comment
возможно ли реализовать ту же концепцию для отдельных viewController или всегда нужно начинать с корневого контроллера? Потому что у меня уже есть корневой контроллер и было бы лучше, если бы они не мешали друг другу... . - person letsCode; 08.06.2020
comment
@ Нико С. не могли бы вы предложить какую-нибудь идею для этого? - person letsCode; 08.06.2020
comment
Вы можете запустить свой координатор (который обрабатывает всю логику, связанную с появлением viewController) в методе didFinishLaunchingWithOptions класса AppDelegate. Координатор может начать с метода start(window: UIWindow), который представит первый viewController следующим образом: self.window.rootViewController = viewController - person Roman Shinyavski; 08.06.2020