Использование контроллера представления, управляющего двумя другими контроллерами представления

StackOverflow https://stackoverflow.com/questions/9398590

  •  29-10-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

(Ссылки на документацию Apple, как правило, часто меняются, поэтому используйте Google «Контроллер пользовательского представления содержимого» для документации.)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top