Я прочитал много вопросов по этой проблеме, но все же не нашел правильного решения этой проблемы. У меня есть новостное приложение, которое запускается на экране-заставке (для получения новостных лент и их кэширования), а затем переключается на главный экран, который представляет собой смесь новостных статей. Вы можете переходить с этого экрана на многие другие экраны, нажимая на статьи, разделы, галереи, видео и т. д. У меня есть фиксированный верхний и нижний колонтитулы, которые я решил создать подклассом главного UIViewController и разместить их на нем (я я унаследую этот UIViewController от других моих UIViewController)
Я читал, что лучший способ сделать это - иметь несколько контроллеров представления, каждый из которых управляет определенным разделом моего приложения. Однако я все еще немного смущен тем, как правильно и ответственно переключаться между ними. Я пробовал переходы раскадровки, но столкнулся с двумя проблемами:
- Мне нужно создать много переходов, так как вы можете практически прыгать с любого экрана на любой другой экран.
- Переходы не сохранят состояние UIViewController, как только вы перейдете к другому, и как только вы вернетесь, он сбрасывается в исходное состояние.
Я также читал о presentModalViewController, с помощью которого вы можете нажимать свое представление как модальное поверх текущего контроллера. Однако вам нужно делать это много, и я немного боюсь проблем с потреблением памяти.
Каков наилучший способ создать приложение с несколькими представлениями без иерархии представлений приложений (UINavigationController/UITabController/etc...) Обычно я хотел бы объявить все свои контроллеры представлений в начале и просто переключаться между ними по мере необходимости (когда я сначала нужно представление, я его инициализирую) Кто-нибудь пробовал что-то подобное раньше?
Большое спасибо.
РЕДАКТИРОВАТЬ: Спасибо за ответы, я вышел и посмотрел сеанс WwDC о сдерживании UIViewController, и это помогло мне понять, как реализовать собственный контейнер UIViewController. Однако есть еще что-то, чего я не могу понять.
Когда я создаю собственный контейнер UIViewController, мне нужно добавить в него дочерние элементы с помощью addChildViewController, и это вызовет событие willMoveToParentController для моего дочернего UIViewController.
Затем я добавляю подпредставления дочерних контроллеров в представления контейнеров, используя [self.view addSubview...], однако это только загружает представления и не связывает их с событиями, которые я создал внутри своего дочернего UIViewController.
Должен ли я использовать что-то еще, кроме addSubview? или мне следует использовать отдельный класс UIView для подключения моих событий?