Die AddCityViewController
wird mit den entsprechenden Textfeldern wiederhergestellt. Die Schaltflächen 'Abbrechen' und 'Speichern' enthalten Aufrufe an den Delegaten. Der Modalansicht-Controller wird wiederhergestellt, aber die Schaltflächen "Speichern" und "Abbrechen" aktivieren die Delegate-Methode nicht. Alle View-Controller wurden innerhalb des Storyboards erstellt.Schwacher Referenzdelegierter nicht wiederhergestellt
Schaltfläche Abbrechen ruft nur die Delegate-Methode auf, wenn die Statuswiederherstellung nicht implementiert wird.
Ich möchte die Delegierten auch aufgerufen werden, wenn es gebraucht wird für staatliche Sanierung
// AddCityViewController.m
- (IBAction)cancelButton:(UIBarButtonItem *)sender {
[self.delegate save:nil withBool:false];
}
#pragma mark - encodeRestorable and decodeRestorable
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
[super encodeRestorableStateWithCoder:coder];
[coder encodeObject:self.delegate forKey:@"restoreDelegate"];
[coder encodeObject:self.cityNameLabel.text
forKey:@"restoreCountyLabelText"];
}
-(void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.delegate forKey:@"restoreDelegate"];
_cityNameLabel.text = [coder decodeObjectForKey:@"restoreCountyLabelText"];
[super decodeRestorableStateWithCoder:coder];
}
Die CityTableViewController
ist der Delegierte für die AddCityTableView
// CityTableViewController.m
#import "CityTableViewController.h"
#import "AddCityViewController.h"
#import "City.h"
#import "County.h"
@interface CityTableViewController()<addCityDelegate>
@property(nonatomic,strong)NSFetchedResultsController *fetchedResultsController;
@end
#pragma mark - AddConjugations Delete
...
Die unten delegieren Methode funktioniert perfekt, mit Ausnahme von STATE RESTORATION. Während der Statuswiederherstellung wird diese Methode nie aufgerufen.
Es ist ziemlich seltsam als Teil des archivierten Objektgraphen Archivierung der Delegierten werden. Normalerweise etwas, das Sie neu erstellen würden, wenn die Benutzeroberfläche verfügbar wird. Allgemein. – bbum
Ich kann den Delegaten nicht neu erstellen, wenn der Ansichtscontroller wiederhergestellt wird. Bei Zustandswiederherstellung kehrt der View-Controller mit seinem Textfield-Text zurück, aber self.delegate = (null). –