Die docs auf viewControllerWithRestorationIdentifierPath:coder:
sagen:Wie kann ViewControllerWithRestorationIdentifierPath: Coder: eine vorhandene Instanz finden?
Ihre Implementierung dieser Methode sollte (oder zu finden), um das entsprechenden View-Controller-Objekt zu erstellen und senden Sie es ... Es ist nicht immer notwendig ist, ein neues View-Controller-Objekt zu erstellen in Ihrer Implementierung dieser Methode. Sie können auch eine vorhandene Sicht Controller-Objekt, das auf andere Weise erstellt wurde, zurückgeben. Beispiel: Wenn der Ansichts-Controller bereits aus einer Storyboard-Datei, geladen wurde, würden Sie dieses Objekt zurückgeben, anstatt ein neues zu erstellen. [Meine Kursivschrift.]
Das erschien mir immer als kompletter Unsinn. Dies ist eine Klassenmethode! In diesem Moment haben wir keinen Zugriff auf Instanzen - es sei denn, wir erstellen einen. Ich wäre dankbar, wenn mir jemand erklären könnte, wie in aller Welt eine Klassenmethode "den View-Controller, der bereits aus einer Storyboard-Datei geladen wurde, finden oder kennen kann".
EDIT: „Um ein View-Controller-Objekt zurück, das durch ein anderes Mittel geschaffen wurde“ die Prämie verdienen Sie ihnen einen tatsächlichen Fall zeigen müssen, von Ihrer eigenen App, der Klassenmethode viewControllerWithRestorationIdentifierPath:coder:
verwendet wird, um
Im echten Leben, da der App-Delegat in der Tat wahrscheinlich derjenige ist, der weiß, welche View-Controller bereits aus der Storyboard-Datei geladen wurden und wie man sich darauf bezieht, wie der Wiederherstellungsmechanismus einsetzt, scheint es wahrscheinlicher, dass ich Überspringen Sie 'viewControllerWithRestorationIdentifierPath: coder:' und verwenden Sie die Anwendung 'applicate: viewControllerWithRestorationIdentifierPath: coder:' _instead_ des Anwendungsdelegaten. Und da dies eine Instanzmethode ist, gibt es kein Problem. Ich scheine es versäumt zu haben, irgendwelche Umstände hervorzurufen, wo man das nicht tun würde. – matt