webentwicklung-frage-antwort-db.com.de

Die Ansicht wurde vom Navigations-Controller aus verschoben

Ich habe einen Navigationscontroller mit einem View Controller, der eine Schaltfläche anzeigt. Die Schaltfläche ist über ein Push-Menü mit einem anderen View Controller verknüpft, wodurch automatisch eine obere Navigationsleiste mit einer Zurück-Schaltfläche hinzugefügt wird. Das alles funktioniert gut. Durch Drücken der Zurück-Taste wird die 2. Ansicht verschoben und die 1. Ansicht wird wieder angezeigt.

Ich habe eine Taste auf dem 2nd View Controller, die bei Betätigung Code und einen Delegatenaufruf an den 1st View Controller ausführt. Das funktioniert wieder gut.

Jetzt muss ich nur noch die 2. gedrückte Ansicht aus dem Code verwerfen, als ob die Zurück-Taste gedrückt wurde. Ich habe es mit dismissModalViewCcontrollerAnimated und dismissViewControllerAnimated versucht, jedoch beide den gesamten Navigations-Controller, der die Ansichten 2 und 1 entfernt (und gibt zurück) zu meinem Hauptmenü).

Was ist der richtige Weg, um die Ansicht zu verschieben.

22
Darren

Fordern Sie einen Verweis auf Ihren UINavigationController an und rufen Sie an

- (UIViewController *)popViewControllerAnimated:(BOOL)animated

darauf.

37
Stavash

In Swift würde es die Methode aufrufen

self.navigationController?.popViewControllerAnimated(true)
11
Garrett Cox

In Swift können Sie auch anrufen: 

self.navigationController?.popToRootViewControllerAnimated(true)
2
jnwagstaff

Wenn wir Push segue verwenden, verwenden Sie popViewController

@IBAction func backButtonClicked(_ sender: Any) {
    self.navigationController?.popViewController(animated: false)
}
2
A.G

Auf Objective-C steht

[self.navigationController popViewControllerAnimated:YES];

für einen Sprung zum ersten root Controller

[self.navigationController popToRootViewControllerAnimated:YES];

oder ist ein möglicher Wechsel zum jeweiligen Controller

[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)];

animationsspezifischer Animationsprozess zum Bewegen des Controllers. Wenn die Animation false ist, wird der Controller ohne Animationen angezeigt. Die UIViewController muss von einer auf dem Stack befindlichen sein. 

1
Jan Damek