2012-06-27 2 views
2

Я выполняю подобный segue;Segue всегда загружает новый экземпляр вида

[self performSegueWithIdentifier:@"showSecondView" sender:self]; 

Но поведение является то, что он всегда будет «нагрузка» новый вид, а не показывать существующий вид, если он уже загружен.

Мой вопрос: как я могу сохранить представление в памяти, как только я его загрузил, так что будущие вызовы segue просто «покажут» существующее представление?

Благодаря

EDIT:

Вот мой дизайн пользовательского интерфейса. Это, по сути, настраиваемый контроллер представлений на боковой панели с UIView (большой серый блок), где размещены все подзоны.

ответ

1

Короткий ответ, что IOS не очень хорошо подходит для этого, но вы можете быть в состоянии сделать это. Это зависит.

Вопрос в том, как этот контроллер представления представлен в иерархии диспетчера представлений. Стандартными опциями являются pushViewController (push segue) или presentViewController (модальный отступ). Возможно, вы сможете выполнить пользовательский сегмент, который использует защиту контроллера вида (см. WWDC 2011 session 102), но я был бы удивлен, если бы это было то, что вы хотели бы продолжить. Обычно, когда вы слышите, как люди говорят о разочаровании в создании новых представлений, это результат их желания вернуться к основному виду, но пренебрегая popToRootViewController и вместо этого переходя к этой корневой сцене.

Полностью теоретический (и, вероятно, непрактичный) ответ, который может возникнуть, заключается в использовании синглтона и небольшого количества манипуляций для перехода к просмотру, но после просмотра сессии 102 WWDC 2011 в области контроля контроллера зрения, сохраняя иерархию взглядов, синхронизированную с иерархией контроллера представления, поэтому я не думаю, что это имеет смысл.

Возможно, я смогу сделать более содержательное предложение, если бы понял ваш желаемый пользовательский интерфейс. Для 99% приложений они ориентированы на толкание/всплывающие представления, представление/отклонение модальных представлений или использование какого-либо контейнера (например, контейнера панели табуляции или какого-либо настраиваемого контейнера) для перехода между представлениями между братьями и сестрами. Каков ваш поток пользовательского интерфейса?

+0

Спасибо! Смотрите этот скриншот: http://cl.ly/2M0h2s2D0r1N1y403z3w - у меня в основном есть настраиваемая боковая панель, и все мои представления отображаются через пользовательский UIView (большой серый блок в центре) – Dave

+0

Затем я забираю его обратно. Это выглядит как идеальное упражнение сдерживания контроллера. Я не знаю, помогает ли это, но я разместил пример контроллера представления контейнеров (это использовало сегментированный элемент управления для перехода между контроллерами дочерних представлений, но я думаю, вы увидите очевидные параллели между этим и тем, что вы пытаясь сделать. См. http://stackoverflow.com/questions/11171404/objective-c-flip-between-views-with-one-viewcontroller-or-more/11183442#11183442 – Rob