В моем приложении у меня есть сложный вид, который содержит:
corePlot график
Коллекции View (управляется Core Data)
и некоторые другие Представлений, (управляемый Core Data другой запрос)
Элементы в представлении коллекции могут быть скопированы на основной участок.
Я думаю, было бы лучше и проще иметь несколько контроллеров представления:
один контроллер для основного участка, один для коллекции и т. Д. Потому что, если у меня есть только один контроллер просмотра для управления всеми этими элементами, это будет огромный файл, содержащий много кода и не хорошо структурированный.
Могу ли я использовать Контейнер для решения этой проблемы? или лучше придерживаться огромного файла ViewController? Или есть другое решение? Если да, то это решение можно сделать в раскадровке?Различных View контроллеры для одного View объективных C
ответ
Container View Controller кажется идеальным для того, что вы хотите:
Все шаги перечислены в приведенной выше ссылке, но быть коротким:
- добавить контроллер представления ребенка в контейнер с [self addChildViewController:childVC]
- то установить вид контейнера [self.view addSubview:childVC.view]
- и затем сказать контроллер представления ребенка, что он установлен в контейнере с [childVC didMoveToParentViewController:self]
затем, если вы хотите, чтобы перейти на новый контроллер представления ребенка:
- Позвоните [self addChildViewController:newVC]
и [source willMoveToParentViewController:nil]
, чтобы контейнер знал, что вы собираетесь переключить контроллер детского вида.
- то сделать переход с:
[self transitionFromViewController:oldVC toViewController:newVC
duration:/*you duration*/
options:/*your options*/
animations:/*your animations*/
completion:/*your completion*/]
- и в конце вызова
[oldVC removeFromParentViewController]
и[newVC didMoveToParentViewController:self]
, чтобы контейнер знать, что переключатель делается.
Надеюсь, что это поможет.
У вас могут быть разные контроллеры представлений для ваших видов. Но вам нужно попробовать этот хак, так как вы хотите одновременно представлять содержимое всех контроллеров представлений на одной сцене.
Контроллеры просмотра контейнеров - это контроллеры представлений, которые представляют содержимое контроллера детского вида. Но в представлении контейнера одновременно отображается только один ребенок. Таким образом, вам нужно создать контроллер представления и добавить столько видов контейнеров, сколько потребуется для просмотра контроллеров. Я приложил снимок.
Надеюсь, это поможет!
Шаги для достижения этого в доске объявлений: 1) В IB выберите контроллер вида.
2) Добавить Контейнерные виды от IB для просмотра иерархии контроллера вида.
3) Вы можете изменить дочерний элемент контейнера, просто удалив его и подключив требуемый контроллер вида.
4) Оба ребенка обоих видов контейнера представлены без кода в раскадровке.
Для инициализации контроллеров просмотреть и делегирование ч/б я настоятельно рекомендую вам пересмотреть коды образца в View Controller Programming guide
Спасибо, мне нужно подключить контейнеры к контроллеру Main View? Я сделал это (у меня есть IBOutlet для моих контейнеров) ... но что мне делать потом ... мои взгляды не отображаются. – kapukinz
Надеюсь, что это поможет сейчас. Пожалуйста, просмотрите это руководство один раз. Также, примите этот ответ, если он вам поможет – aMother
Спасибо, что помогло – kapukinz
- 1. Отклоняющиеся контроллеры Modal View
- 2. Контроллеры Xcode View
- 3. переборе «ACTIVE» View контроллеры
- 4. View контроллеры с быстрым
- 5. View контроллеры Совместимость
- 6. Контроллеры iOS View не выпускаются?
- 7. App Crashes Загрузка View контроллеры
- 8. инстанцировании View контроллеры от AppDelegate
- 9. Коммутационные контроллеры View over Swift
- 10. View View View View View View View
- 11. ComponentKit как контроллеры push view CKComponentController
- 12. Tree View/File View Control для C#
- 13. View Контроллеры не отображаются в правильной ориентации
- 14. Структурирование программ iOS - контроллеры SQLite и View
- 15. Как правильно использовать контроллеры Modal View?
- 16. Rails-4.2 Share view with muliple контроллеры
- 17. Одинаковые UIProgressView Более Множественные View контроллеры
- 18. Появились контроллеры Modal View. Лист действия
- 19. Mimicking iOS view view
- 20. View контроллеры аварии с автоматическим вращением
- 21. Контейнер View контроллеры - уведомлять родителей действий
- 22. Очистить все View контроллеры На Выходе
- 23. «Приложение попыталось представить контроллеры Split View modally»
- 24. View Контроллеры накапливают память даже при увольнении, в Objective C
- 25. Android view view view area
- 26. Различные контроллеры в разных файлах для ng-view
- 27. Grid View in Grid view
- 28. Как отделить модули в различных View Controllers
- 29. Ссылка на массив из другого View Table View View View
- 30. DataBindingUtil findBinding (View view) vs getBinding (View view)
хорошего друга и полезно тоже –
Это то, что я пытаюсь сделать сейчас ... но Я не могу получить контейнер для показа на моем основном представлении. У меня есть контейнер, который разделяет коллекцию View в моей раскадровке. Я добавил IBAction для контейнера к основному контроллеру. Я также установил представление контейнеров в свой конкретный контроллер вида Collection в раскадровке. Где я могу вызвать addChildViewController? Это можно вызвать только на ViewController, а не на контейнере, который является представлением. Итак, как вызвать addChildViewController на контейнере – kapukinz
Можно ли это сделать, используя контейнер представления в раскадровке? Это одно и то же, чем то, что предложила «мама»? – kapukinz