Почему мое приложение не возвращается к подробному виду после восстановления?

Мое приложение имеет простую организацию, которую я настроил в раскадровке Interface Builder (не в коде). Есть Контроллер Представления Навигации, у которого его Контроллер Root View установлен в мой Главный Контроллер Представления. Мое главное представление содержит таблицу, в которой ячейки переходят в контроллер подробного представления.

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

Подробности:

Я установил идентификаторы восстановления в Интерфейсном Разработчике для Контроллера Представления Навигации, Контроллера Главного Представления и Контроллера Детального Представления. Я также попытался добавить идентификатор восстановления в табличное представление и заставить контроллер основного представления реализовать UIDataSourceModelAssociation.

Мое приложение возвращает YES из shouldRestoreApplicationState, и оба основных вида и подробный вид имеют методы encode / decodeRestorableStateWithCoder.

Я тестирую приостановку / возобновление с помощью симулятора: я запускаю приложение, перехожу к подробному виду, нажимаю кнопку «Домой» и затем нажимаю кнопку «Стоп» в XCode. Чтобы возобновить, я снова запускаю приложение из XCode.

Я вижу следующие звонки в режиме ожидания:

AppDelegate shouldSaveApplicationState
MainViewController encodeRestorableStateWithCoder
DetailViewController encodeRestorableStateWithCoder

И в резюме:

AppDelegate shouldRestoreApplicationState
AppDelegate viewControllerWithRestorationIdentifierPath Navigation
AppDelegate viewControllerWithRestorationIdentifierPath Navigation/MainView
MainViewController viewDidLoad
AppDelegate viewControllerWithRestorationIdentifierPath Navigation/DetailView
MainViewController decodeRestorableStateWithCoder

Помимо того, что восстанавливается неправильный вид, есть еще кое-что странное: почему путь идентификатора восстановления для подробного вида «Navigation / DetailView», а не «Navigation / MainView / DetailView»? Нет прямой связи между контроллером навигационного представления и контроллером подробного просмотра. Их единственное соединение в Интерфейсном Разработчике через переход от Главного Представления.

Я что-то неправильно настроил?

Я попытался назначить класс восстановления в подробном представлении. Когда этот код восстановления вызывается, он терпит неудачу, потому что UIStateRestorationViewControllerStoryboardKey не установлен в кодере.

Вот игрушечная версия моего проекта, которая повторяет проблему:https://github.com/WanderingStar/RestorationTest

Я пытаюсь сделать это с версией XCode 5.0 (5A1413) и iOS Simulator Version 7.0 (463.9.4), на случай, если они актуальны.

Ответы на вопрос(2)

Ваш ответ на вопрос