Платформа переключения представлений для "настоящего" MVC на iOS - PullRequest
0 голосов
/ 22 марта 2012

Мне не нравится UINavigationController, потому что стиль навигации по дереву / развертке работает не во всех ситуациях.То, что я ищу, - это своего рода UISwitchController, где контроллер представления может сообщить UISwitchController, каков следующий вид и какие данные ему передать.Затем текущее представление закрывается, и UISwitchController будет обрабатывать открытие следующего представления и передачу данных из предыдущего представления.UISwitchController может запомнить имя / тип последнего открытого представления, чтобы текущее представление могло сказать, кто его открыл (также позволяет UISwitchController обрабатывать запрос Back для текущего представления без текущего представления, задающего имя представления, открывшего его),Представление также может пометить UISwitchController, чтобы сохранить его в памяти и не освобождать его после закрытия, так что контроллер представления существенно используется для каждого вызова этого представления.Есть ли такие рамки?

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Итак, в основном вы говорите о UIViewController, который содержит несколько UIView (Controller) и управляет презентацией.

В iOS <5 я бы просто использовал UIViewController, который добавляет представления в другое представление, которое отображается. </p>

в iOS 5+ вы должны ознакомиться с UIViewController Containment, который на самом деле представляет собой образец использования UIViewController с другими дочерними контроллерами представления.

из документа UIViewController

Реализация контроллера представления контейнера

В iOS 5.0 и более поздних версиях пользовательские подклассы UIViewController также могут действовать как контроллеры представления контейнера. Контейнер просмотра контейнера управляет представление содержимого других контроллеров представления, которыми он владеет, также известных как его дочерние контроллеры представления. Взгляд ребенка может быть представлен как есть или в сочетании с представлениями, принадлежащими контроллеру представления контейнера.

Ваш подкласс контроллера представления контейнера должен объявить открытый интерфейс, чтобы связать своих детей. Природа этих методов вам и зависит от семантики контейнера, который вы создаете. Вы должны решить, сколько детей может отображаться вашим представлением контроллер сразу, когда эти дети отображаются, и где они появляются в иерархии представления вашего контроллера представления. Ваш контроллер просмотра Класс определяет, какие отношения, если таковые имеются, являются общими для детей. Установив чистый публичный интерфейс для вашего контейнера, вы убедитесь, что дети используют его возможности логически, без доступа слишком много частных сведений о том, как ваш контейнер реализует поведение.

1 голос
/ 22 марта 2012

Я не очень часто его использую, поэтому не знаю, действительно ли это то, что вы ищете, но вы можете использовать TTNavigator из платформы Three20 для выполнения навигации на основе URL, которая звучит так, как будто это то, что вам нужно.

https://github.com/facebook/three20

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...