Программно изменить подпредставления из контроллера подпредставления - PullRequest
1 голос
/ 22 июня 2010

В моем приложении для iPhone я установил пустое представление по умолчанию, называемое главным представлением, в которое будут загружаться различные дочерние подпредставления для разных частей приложения. Это такой же подход, как если бы я использовал панель инструментов для переключения между подпредставлениями. В этом случае в контроллере MainView я мог подключить IBActions к кнопкам на панели инструментов, чтобы при нажатии кнопки MainView добавлял разные подпредставления для себя.

В моей ситуации, однако, я должен сказать MainView изменить его подпредставление из подпредставлений. Итак, вот два родственных подпредставления, каждое со своим собственным контроллером и xib, которые будут загружены как подпредставления MainView: - StartView - FormView

В StartView, после некоторых анимаций и приветствий, кнопка запускает сборщик изображений с камеры. Как только средство выбора изображений возвращает изображение, мне нужно сказать MainView удалить StartView и добавить FormView.

Это может быть результатом долгого дня или моей новой работы с iPhone OS, но я застрял, пытаясь понять, как правильно настроить мои объекты / контроллеры.

1 Ответ

0 голосов
/ 22 июня 2010

У вас никогда не бывает более одного активного контроллера просмотра одновременно. (Контроллеры nav и tabbar не контролируют представления, они контролируют другие контроллеры.) В этом случае у вас будет один контроллер, у которого в качестве свойства представления будет MainView. Это добавит StartView и formView как подпредставления MainView.

Однако это не очень хороший дизайн. Он перегрузит контроллер MainView, заставив его манипулировать многими представлениями. Было бы лучше использовать скрытый навигационный контроллер или панель вкладок. Иерархии контроллеров могут создать иллюзию с точки зрения пользователя практически для любой структуры интерфейса, которую вы можете себе представить. Нет необходимости создавать логическую структуру, которая имитирует визуальную.

Из вашего описания вам может понадобиться только одна пара view / view-controller: Установите контроллер formView так, чтобы он открывал вид камеры до того, как он отобразит formView. Когда камера закрывается, она автоматически возвращается в форму. Без суеты, без суеты.

...