In einer UIViewController Unterklasse, habe ich die folgenden Methoden:UIViewController: viewWillAppear heißt, viewDidAppear nicht
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// do something
myTextField.text = @"Default";
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// do something
[myTextField selectAll:self];
[myTextField becomeFirstResponder];
}
- (void)viewDidLoad {
[super viewDidLoad];
// do something
myTextField.delegate = self;
}
Die NIB wurde Interface Builder erstellt. Das entsprechende View-Controller-Objekt wird vom Navigationscontroller über pushViewController geschoben.
Das beabsichtigte Verhalten zeigt einen Standardtexteintrag in einem Textfeld an, um den gesamten Text auszuwählen und das Textfeld als Ersthelfer festzulegen. [Edit: Ich habe festgestellt, dass die Auswahl aller und erste Responder macht keinen Sinn, da die Auswahl würde verschwinden; dennoch frage ich mich, warum sich die Methoden so verhalten, wie weiter unten beschrieben.]
während Methoden viewDidLoad und viewWillAppear aufgerufen werden, wird die Methode viewDidAppear nicht aufgerufen. Kann mir jemand sagen warum? Die meisten Fragen, die ich im Web gefunden habe und hier mit viewWillAppear/viewDidAppear arbeiten, funktionieren nicht; Ich habe auch verstanden, dass diese Methoden in Subviews oder programmatisch erstellten Views nicht evoziert werden; Aber das gilt nicht für den Fall und ich frage mich auch, warum eine dieser "Lebenszyklus" -Methoden hervorgerufen wird und die andere nicht.
Irgendeine Idee? Vielen Dank!
Es sollte kein Speicherproblem auftreten, mindestens didReceiveMemoryWarning wird nicht aufgerufen. Eine saubere alle Ziele hat nicht geholfen. Also bin ich Ihrem Rat gefolgt und habe die Klasse in einem neuen Projekt schrittweise "kopiert". Und es funktioniert. : -/Ich habe alle Methoden hinzugefügt, die ich in meiner ursprünglichen Klasse überschreibe und in einem Projekt funktioniert es, in der anderen nicht. In beiden Fällen wird die Ansicht von pushViewController auf einem navcontroller angezeigt. Einziger Unterschied: Im Testprojekt gibt es einen navcontroller, in meinem Projekt gibt es drei (rootcontroller ist ein Tabbarcontroller) –
@sven - Ich möchte die Titelansicht der Navigationsleiste ändern. Es scheint, dass die Ansicht noch nicht in die Navigationsleiste verschoben wurde, wenn viewWillAppear ausgelöst wird. – OmniBus