Использование View Controller для управления двумя другими View Controller

У меня есть offlineMapVC и onlineMapVC для моего приложения, чтобы поддерживать как онлайн-карты (используя MapKit и Google Maps), так и автономные карты (используя Route-Me).

Я сделал свой собственный mapVC управлять переключением этих mapVC и иметь возможность использовать контроллер представления в качестве одного отдельного контроллера представления. Ну, я сделал это, сделав offlineMapVC и onlineMapVC переменные экземпляра нового mapVC Ведьма, которую я сейчас использую во всем приложении.

Прежде всего, кажется, что все работает, но. Однако, используя этот подход в течение более длительного времени, я столкнулся с некоторыми проблемами из-за моего использования View Controllers в иерархии. Я прочитал, что это неправильный путь.Как правильно управлять переключением между двумя контроллерами представления? Мой вопрос кажется довольно простым, но я не смог найти достойного решения.

1 ответ

Решение

Я сам помещаю контроллеры представления в контроллеры представления, и я видел гораздо лучших программистов, чем я, делающих то же самое. (См. Роб Нейпир "Программирование на iOS 5 - раздвигая границы". Он часто упоминает об этом.) Если у вас не более одного контроллера представлений, непосредственно управляющего одними и теми же представлениями и подпредставлениями, вы должны с этим согласиться.

С тех пор, как Джона Уильямс написал эту статью, я думаю, что iOS 5 формализовала использование иерархии контроллеров представления с настраиваемыми контроллерами представления контента. Вы могли бы считать, что ваш mapVC является настраиваемым контроллером представления контента, и реализует onlineMapVC и offlineMapVC в качестве дочерних контроллеров представления.

(Ссылки на документацию Apple, как правило, часто меняются, поэтому Google "Custom Content View Controller" для документации.)

Если вы можете дать больше контекста тому, что вы подразумеваете под "переключением между двумя контроллерами представления", это поможет ответить на ваш вопрос. Как правило, у меня одновременно работает несколько контроллеров представления. Я не переключаюсь между ними. (Я использую контроллеры панели навигации и панели вкладок в том же приложении, но я предполагаю, что вы знаете, как они работают, и задаете другой вопрос. Просто не ясно, каковы особенности в вашем случае.)

Другие вопросы по тегам