восстановление состояния в iOS

Я сохраняю экран своего приложения, чтобы при открытии приложения отображался сохраненный экран. Приложение основано на навигации.

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

Невозможно создать файл маркера процесса восстановления.

Не уверен, что еще нужно сделать.


person gupta    schedule 17.10.2013    source источник
comment
Я бы посоветовал потратить время на чтение документации Apple по сохранению и восстановлению состояния. State Preservation and Resrvation Apple Doc   -  person Dean    schedule 14.11.2013
comment


Ответы (3)


Раньше у меня было такое же предупреждение, и я исправил его, выполнив следующие действия.

Я использовал раскадровку. Моя раскадровка включала только контроллер представления навигации и контроллер представления (который был корневым контроллером представления этого контроллера представления навигации). В моем случае это было вызвано одной из двух причин:

Приложение не было правильно настроено для сохранения состояния. Необходимо установить следующее:

  1. В делегате приложения переопределите application:willFinishLaunching. В этом методе можно просто вернуть YES.

  2. Для каждого контроллера представления и представления (включая контроллеры представления навигации и контроллеры представления вкладок) установите идентификатор восстановления.

  3. В делегате приложения зарегистрируйтесь, переопределив shouldSaveApplicationState и shouldRestoreApplicationState.

Если это предупреждение по-прежнему появляется, вы можете проверить, как вы запускаете свое приложение в Xcode. Я запустил свое приложение в симуляторе Xcode и должен был следовать определенной последовательности, чтобы вызвать сохранение состояния.

  • запустить приложение в симуляторе Xcode
  • В симуляторе Xcode нажмите кнопку Главная, чтобы перевести приложение в фоновый режим. Следует вызвать метод encodeRestorableStateWithCoder контроллера представления
  • вернитесь в Xcode, нажмите кнопку «stop», чтобы завершить симуляцию
  • В симуляторе Xcode дважды щелкните кнопку «Домой», а затем удалите приложение из переключателя приложений и
  • вернитесь в Xcode, снова запустите приложение.

Это предупреждение не должно появляться. Когда я использовал другие последовательности, я увидел появление этого предупреждения. Когда я отлаживал свое приложение на своем устройстве с помощью Xcode, я следовал той же последовательности и не видел предупреждения.

Я думаю, что это предупреждение указывало на то, что, поскольку Xcode не может правильно завершить приложение, файл восстановления состояния не был правильно сохранен на диске.

person Julia Zhao    schedule 23.11.2013
comment
Я почти уверен, что вам не нужно выполнять описанный выше шаг D (принудительно закрывать приложение в симуляторе). - person Johan; 15.07.2014

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

введите здесь описание изображения

более подробная информация: http://useyourloaf.com/blog/2013/05/21/state-preservation-and-restoration.html

person Yiding    schedule 13.11.2013

Симулятор:

  • Это происходит впервые на симуляторе, когда приложение кодирует. (не уверен, почему)
  • В последующие разы это предупреждение не будет отображаться.

Устройство:

Попробуйте запустить на устройстве.

  1. Запустить на устройстве
  2. Перейти на главный экран.
  3. Остановить работу на Xcode
  4. Удалить приложение из переключателя приложений
  5. Запустить на устройстве снова
person user1046037    schedule 21.10.2016