2012-02-22 3 views
0

У меня есть offlineMapVC и onlineMapVC для моего приложения для поддержки как онлайн-карт (с использованием MapKit, так и Карт Google) и офлайн-карт (с использованием Route-Me).Использование контроллера View, управляющего двумя другими контроллерами View

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

Прежде всего, все работает, но. Однако, используя этот подход в течение более длительного времени, я столкнулся с некоторыми проблемами из-за использования контроллеров View в иерархии. I read this is the wrong way to go.Каков правильный способ управления переключением между двумя диспетчерами? Мой вопрос кажется довольно простым, но я не мог найти достойного решения.

+1

Я решил проблема, определяя иерархию контроллера представления с помощью метода addChildViewController:. – thijsai

ответ

2

Я сам поставил контроллеры просмотра на виду контроллеров, и я видел гораздо лучших программистов, чем я, делаю то же самое. (См. Rob Napier «Программирование iOS 5 - нажатие границ». Он часто упоминает об этом.) Пока у вас нет нескольких контроллеров, которые напрямую контролируют одни и те же представления и подпункты, вы должны быть в порядке.

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

(ссылки на документацию Apple, как правило, изменения frequenctly, поэтому Google «Пользовательский контент View Controller» для документации.)

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

+0

Thansks для быстрого ответа, я переключаюсь между диспетчерами представлений, добавляя и удаляя представления onlineMapVC и offlineMapVC к виду mapVC. – thijsai

Смежные вопросы