Es gibt kein spezielles Ereignis, das man nur für die Zurück-Taste bekommen kann. Sie können verschiedene viewWillAppear:
, viewWillDisappear:
, etc. stattdessen. z.B.:
//In View2:
- (void) viewWillDisappear:(BOOL) animated {
[super viewWillDisappear:animated];
if (!goingToSubscreen) {
//Do something important here
}
goingToSubscreen = NO;
}
//In View1:
- (void) viewWillAppear:(BOOL) animated {
[super viewWillAppear:animated];
if (wentToSubscreen) {
//Do something important here
}
wentToSubscreen = NO;
}
Beachten Sie, dass die Booleschen Werte wentToSubscreen und goingToSubscreen als named eingerichtet werden sollten. Wenn Sie einen anderen View auf den Navigationscontroller über View2 schieben, sollten Sie goingToSubscreen auf YES setzen, damit er nicht die wichtigen Dinge tut. Umgekehrt sollten Sie goToSubscreen für View1 auf YES setzen, nachdem Sie View2 geschoben haben, damit beim erneuten Erscheinen von View2 erst nach der Rückkehr von diesem Bildschirm etwas Interessantes passiert, und nicht schon beim ersten Erscheinen von View1.
Edita: Ab iOS 5.0, I glauben gibt es dafür eingebaute Eigenschaften. isBeingDismissed
wird eingestellt auf YES
während viewWillDisappear:
y viewDidDisappear:
für den Fall, dass Sie die Zurück-Taste drücken. Als Referenz können Sie die folgenden Eigenschaften überprüfen:
isMovingFromParentViewController
isMovingToParentViewController
isBeingPresented
isBeingDismissed
Was die Änderung des Titels der Schaltfläche "Zurück" betrifft, so gehört diese Eigenschaft zum Element "Zurück" der vorherigen Ansicht:
View1.navigationItem.backBarButtonItem.title = @"My New Title";
oder:
View1.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease];
Die dritte Möglichkeit besteht darin, die Zurück-Schaltfläche durch eine benutzerdefinierte Schaltfläche zu ersetzen. Damit können Sie Ihre eigene Methode angeben, die Sie aufrufen können, so dass Sie nicht die Methode -viewWillDisappear:
aber dadurch wird die Schaltfläche als Rechteck anstelle einer Schaltfläche mit einem Rückwärtspfeil angezeigt. Diese Schaltfläche erscheint in Ansicht2 statt in Ansicht1:
View2.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView)] autorelease];