Пусть ContainerView представляет собой родительский контейнерный вид с двумя дочерними объектами: NavigationView и ContentView.

Я хотел бы иметь возможность сменить контроллер ContentView на другое представление. Например, замена контроллера домашней страницы контроллером страницы новостей. В настоящее время единственный способ, которым я могу это сделать, - это использовать делегат, чтобы сообщить ContainerView, что я хочу переключать виды. Это похоже на небрежный способ сделать это, потому что ContainerViewController закончит тем, что у вас есть куча специальных делегатов для всех подзонов.
Это также необходимо связать с NavigationView, который имеет информацию о том, какой вид в настоящее время находится в ContentView. Например: если пользователь находится на странице новостей, панель навигации в навигационном представлении покажет, что кнопка новостей в данный момент выбрана.
Вопрос A:
Есть ли способ поменять контроллер в ContentView без метода делегата, вызывающего сам ContainerView? Я хотел бы сделать это программно (без раскадровки).
Вопрос B:
Как я могу сменить контроллеры в ContentView с NavigationView без вызова делегата? Я хотел бы сделать это программно (без раскадровки).