Ich versuche, einige Daten zu meiner View-Controller-Klasse wie folgt passieren:Kann nicht übergebenen Daten in viewDidLoad Methode erhalten
MyViewController *vc = [[MyViewController alloc] init];
vc.myProperty = dataToBePassed;
[self.navigationController pushViewController:vc animated:YES];
ich einige Blick in viewDidLoad Konfiguration vornehmen müssen, aber es scheint, dass viewDidLoad früher als Eigentumszuweisung aufgerufen.
Dann in MyViewController Umsetzung:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"%@", self.myProperty); // Here i get myProperty = nil
}
- (void)viewWillAppear
{
[super viewWillAppear];
NSLog(@"%@", self.myProperty); // Here i get myProperty = dataToBePassed but it's to late
}
Wie kann ich in viewDidLoad Methode übergebenen Daten zu bekommen, ohne Singleton oder delegieren Muster zu implementieren?
Machst du etwas in 'init', das bewirkt, dass die Ansicht geladen wird? Sie können dem Initialisierer einfach einen Parameter hinzufügen und ihn übergeben. – dan
Nein, ich überschreibe die init-Methode in MyViewController nicht. Ist es möglich, eine benutzerdefinierte Initialisierungsmethode für VC zu erstellen? Ich dachte, dass alle Initialisierung Sachen für VC in "ViewDidLoad" Methode stattdessen sein müssen. Liege ich falsch? – rockhard
Wenn Sie Storyboards verwenden, können Sie keinen benutzerdefinierten Initialisierer schreiben, aber wenn Sie den Initialisierer nur manuell aufrufen, können Sie einen benutzerdefinierten Initiator verwenden. – dan