die
UIViewControllerRestoration
es für mich gelöst Hinzufügen. Wenn Sie auf dem Protokollverweis klicken, sagt es:
// A class must implement this protocol if it is specified as the restoration class of a UIViewController.
@import UIKit;
@interface AppDelegate : UIResponder <UIApplicationDelegate, UIViewControllerRestoration>
@property (strong, nonatomic) UIWindow *window;
@end
In der Dokumentation geschrieben steht:
Eine Restaurierung Klasse implementiert das UIViewControllerRestoration Protokoll und ist verantwortlich für die Suche oder ein bestimmtes Objekt erstellen zu Zeit wiederherstellen.Hier sind einige Tipps, wann Sie diese verwenden sollten:
1) Wenn der View-Controller beim Start immer aus der Haupt-Storyboard-Datei Ihrer App geladen wird, sollten Sie keine Wiederherstellungsklasse zuweisen. Lassen Sie Ihren App-Delegierten stattdessen das Objekt finden oder nutzen Sie die UIKit-Unterstützung von , um implizit wiederhergestellte Objekte zu finden.
2) Für Ansicht Controller, die nicht von Ihrer Haupt-Storyboard-Datei unter Startzeit geladen werden, weisen Sie eine Wiederherstellungsklasse zu. Die einfachste Option ist , um jedem View-Controller eine eigene Wiederherstellungsklasse zuzuordnen.
Bisher habe ich es so verstanden. Ohne das UIViewControllerRestoration-Protokoll ist appDelegate nicht die Wiederherstellungsklasse (1). Die Warnung wird daher beim Start der App (Wiederherstellungszeit) geschrieben. Der Anwendungsdelegat kann das Objekt, das der Markierungsdatei zugewiesen werden muss, nicht finden. Das Problem ist in der AppDelegate. Wenn der App-Delegat zur Wiederherstellungs-Klasse wird, überspringt er Schritt 1) und geht zu Schritt 2). Es scheint, dass das appDelegate die restorationClass für alle anderen Ansichten wird. Die folgende Methode:
+ (UIViewController*) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents
coder:(NSCoder *)coder {}
wird nie in meiner App aufgerufen und die Wiederherstellung funktioniert ohne Warnungen oder Fehler.
Ich würde gerne das Problem verstehen und was los ist. Ich hoffe, das hilft Ihnen, und Kommentare sind willkommen, um das Problem zu klären. :)
Ich bekomme diese Warnung auch, nicht sicher, was die Ursache ist –
Wie werden Ihre View-Controller erstellt? Sind sie in einem Storyboard oder Nibs oder in Ihrem App-Delegat erstellt, oder ... – Greg
Ich verwende Storyboard mit Navigation View-Controller als Basis. Ich versuche, staatliche Restaurierung zu integrieren. Diese Nachricht wird auch bei Neustarts der App angezeigt (gelöscht und erneut bereitgestellt). –