Warum kehrt meine App nach der Wiederherstellung nicht zur Detailansicht zurück?

Meine App hat eine einfache Organisation, die ich in einem Interface Builder-Storyboard konfiguriert habe (nicht im Code). Es gibt einen Navigationsansicht-Controller, dessen Stammansicht-Controller auf den Hauptansicht-Controller eingestellt ist. Meine Hauptansicht enthält eine Tabelle, in der Zellen mit einem Detailansicht-Controller verknüpft sind.

Wenn ich die Anwendung anhalte, während ich die Detailansicht betrachte und sie dann fortsetze, kehre ich zur Hauptansicht und nicht zur Detailansicht zurück. Warum könnte das so sein?

Einzelheiten:

Ich habe in Interface Builder Wiederherstellungs-IDs für den Navigationsansicht-Controller, den Hauptansicht-Controller und den Detailansicht-Controller festgelegt. Ich habe auch versucht, der Tabellenansicht eine Wiederherstellungs-ID hinzuzufügen und den Main View Controller UIDataSourceModelAssociation implementieren zu lassen.

Meine App gibt YES von shouldRestoreApplicationState zurück und sowohl die Hauptansicht als auch die Detailansicht verfügen über die Methoden encode / decodeRestorableStateWithCoder.

Ich teste das Anhalten / Fortsetzen mit dem Simulator: Ich starte die App, navigiere zur Detailansicht, drücke auf die Home-Schaltfläche und klicke dann auf die Stopp-Schaltfläche in XCode. Um fortzufahren, starte ich die App erneut über XCode.

Beim Suspendieren werden folgende Aufrufe angezeigt:

AppDelegate shouldSaveApplicationState
MainViewController encodeRestorableStateWithCoder
DetailViewController encodeRestorableStateWithCoder

Und im Lebenslauf:

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

Zusätzlich zu der falschen Ansicht, die wiederhergestellt wird, gibt es noch etwas Merkwürdiges: Warum ist der Wiederherstellungs-ID-Pfad für die Detailansicht "Navigation / DetailView" und nicht "Navigation / MainView / DetailView"? Es gibt keine direkte Beziehung zwischen dem Navigationsansicht-Controller und dem Detailansicht-Controller. Ihre einzige Verbindung in Interface Builder erfolgt über die Leiste in der Hauptansicht.

Habe ich etwas falsch konfiguriert?

Ich habe versucht, der Detailansicht eine Wiederherstellungsklasse zuzuweisen. Wenn dieser Wiederherstellungscode aufgerufen wird, schlägt er fehl, weil der UIStateRestorationViewControllerStoryboardKey nicht im Codierer festgelegt ist.

Hier ist eine Spielzeugversion meines Projekts, die das Problem reproduziert:https://github.com/WanderingStar/RestorationTest

Ich versuche dies mit XCode Version 5.0 (5A1413) und iOS Simulator Version 7.0 (463.9.4), falls diese relevant sind.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage