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

Я выполняю переход вот так;

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

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

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

Спасибо

РЕДАКТИРОВАТЬ:

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


person Dave    schedule 27.06.2012    source источник
comment
ответил здесь stackoverflow.com/a/34708582/259521   -  person malhal    schedule 27.04.2018


Ответы (1)


Короткий ответ заключается в том, что iOS не очень подходит для этого, но вы можете это сделать. По-разному.

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

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

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

person Rob    schedule 27.06.2012
comment
Спасибо! Посмотрите на этот снимок экрана: cl.ly/2M0h2s2D0r1N1y403z3w -- у меня в основном есть настраиваемая боковая панель вкладок, и все мои представления отображается через пользовательский UIView (большой серый блок в центре) - person Dave; 28.06.2012
comment
Потом беру обратно. Это похоже на идеальное упражнение по сдерживанию контроллера представления. Я не знаю, поможет ли это, но я разместил пример контейнерного контроллера представления (в нем использовался сегментированный элемент управления для перехода между дочерними контроллерами представления, но я думаю, вы увидите очевидные параллели между этим и тем, что вы пытается сделать. c переключаться между представлениями с одним контроллером представления или более"> stackoverflow.com/questions/11171404/ - person Rob; 28.06.2012