2012-05-09 3 views
1

У меня есть приложение для раскадровки iOS5, и я использую его, чтобы нажать контроллер вида «B» в стек навигационной панели, когда конкретная кнопка нажата в начальном контроллере представления «A». После нажатия кнопки «B» загружаются некоторые данные, вытащенные из веб-службы.UIViewController не хранит состояние в раскадровке

Когда пользователь нажимает кнопку навигации назад, а затем нажимает кнопку, чтобы вернуться к «B», B полностью сбросился. Я понимаю, что это раскадровка, воссоздающая ViewController B. Как я могу остановить это? Я ищу правильный шаблон для решения этой проблемы.

+0

Пожалуйста, помогите кому-нибудь. –

ответ

3

Просто, чтобы уточнить, почему это происходит. Как только вы нажмете кнопку «Назад», viewController «B» выталкивается из стека и, таким образом, удаляется из памяти. Чтобы этого избежать, вам нужно будет создать сильное свойство указателя для viewController 'B' в AppDelegate. Затем в viewWillAppear вы проверяете, является ли это свойство нулевым, и если вы установили его значения как обычно. Если это не так, то вы знаете, что у вас уже есть viewController, и вы используете это вместо этого.

+0

Что делать, если я держу указатель на контроллер B в контроллере A? Я не хочу перечислять множество контроллеров централизованно в App Delegate. Is – sparkFinder

+0

Если вы хотите, чтобы контроллер B сохранил его состояние во всем вашем приложении, то правильное место, чтобы свойство было в вашем AppDelegate. Вы можете сделать то, что вы там описали, но тогда, если контроллер A выталкивается из стека, оба контроллера A и B будут освобождены из памяти. –