Por que meu aplicativo não volta para a visualização de detalhes quando é restaurado?

Meu aplicativo tem uma organização simples, que eu configurei em um storyboard do Interface Builder (não no código). Existe um Controlador de Visualização de Navegação, que tem seu Controlador de Visão Raiz configurado para meu Controlador de Visualização Principal. Minha visualização principal contém uma tabela, onde as células seguem para um controlador de exibição de detalhes.

Quando suspendo o aplicativo enquanto observo a Exibição de Detalhes e, em seguida, a retomo, voltarei para a Visualização Principal, em vez da Exibição de Detalhes. Por que isso pode ser?

Detalhes:

Eu configurei IDs de Restoration no Interface Builder para o Controlador de Visualização de Navegação, o Controlador de Visualização Principal e o Controlador de Visualização de Detalhes. Eu também tentei adicionar uma ID de restauração para a exibição de tabela e fazer o controlador de exibição principal implementar UIDataSourceModelAssociation.

Meu app está retornando YES de shouldRestoreApplicationState e tanto a Main View como a Detail View possuem métodos encode / decodeRestorableStateWithCoder.

Eu estou testando suspender / retomar usando o simulador: eu corro o aplicativo, navegue até a vista de detalhes, aperte o botão home e, em seguida, clique no botão Parar no XCode. Para retomar, estou executando o aplicativo novamente a partir do XCode.

Eu vejo as seguintes chamadas em suspender:

AppDelegate shouldSaveApplicationState
MainViewController encodeRestorableStateWithCoder
DetailViewController encodeRestorableStateWithCoder

E no currículo:

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

Além da visualização incorreta sendo restaurada, há algo mais estranho: Por que o Caminho Identificador de Restauração da Visualização Detalhada "Navigation / DetailView" e não "Navigation / MainView / DetailView"? Não há relação direta entre o Controlador de Visualização de Navegação e o Controlador de Visualização de Detalhes. Sua única conexão no Interface Builder é via segue da Main View.

Eu confiei algo errado?

Eu tentei atribuir uma classe de restauração para a exibição de detalhes. Quando esse código de restauração é chamado, ele falha porque a chave UIStateRestorationViewControllerStoryboard não está definida no codificador.

Aqui está uma versão de brinquedo do meu projeto que replica o problema:https://github.com/WanderingStar/RestorationTest

Estou tentando isso com o XCode Versão 5.0 (5A1413) e o iOS Simulator Versão 7.0 (463.9.4), caso sejam relevantes.

questionAnswers(2)

yourAnswerToTheQuestion