Ich habe eine App, wo ich in einem Registrierungsformular bin und wenn der Benutzer auf Senden klickt, bringt es sie auf die vorherige Seite. Wenn der Benutzer auf der vorherigen Seite zurückklickt, werden sie zurück auf die Registrierungsseite gebracht, die ich nicht möchte. Wie kann ich diese Registrierungsansicht vom Stapel entfernen?Pop aktuelle Ansicht von Stapel und Push neue Xamarin
Dies ist mein aktueller Ansatz:
//inside MyRegistrationController button press
MyPreviousController SVC = this.Storyboard.InstantiateViewController("MyPreviousController") as MyPreviousController;
if(SVC != null){
SVC.offender = offender;
//var viewControllers = this.NavigationController.ViewControllers;
//viewControllers[viewControllers.Length - 1].View.RemoveFromSuperview();
//this.NavigationController.ViewControllers = viewControllers;
this.NavigationController.PopViewController(true);
this.NavigationController.PushViewController(SVC, true);
}
Dieser Strom Ansatz macht etwas seltsam mit dem Stapel, die ich auf die Schaltfläche klicken auf MyRegistrationController
ich zur MyPreviousController
(un aktualisiert) gehe dann gehen schnell zu einer aktualisierten Version von MyPreviousController
zurück zu einer aktualisierten Version von MyPreviousController
und dann, wenn ich auf den Zurück-Button gehe ich zurück zu MyPreviousController
Mit dem 'NavigationController.ViewControllers' arbeiten. Das Problem mit Ihrem auskommentierten Code ist, dass Sie nur die Ansicht vom ViewController entfernen. Sie können den ViewController aus dem Array entfernen, die ViewControllers-Eigenschaft auf das aktualisierte Array setzen und dann nicht mehr im Stack. – dylansturg
Mein Problem ist, dass es keine 'UIViewController []' Funktionen zu entfernen gibt, also bin ich mir nicht sicher, wie man Elemente aus diesem Array entfernt –
Arrays erlauben nicht das Hinzufügen oder Entfernen von Elementen - sie haben eine feste Datenstruktur . Es ist ziemlich einfach mit LINQ zu tun - füge oben 'using System.Linq;' hinzu, dann kannst du 'viewControllers.Take (viewControllers.Length 1) .ToArray(); 'machen und es wird ein neues Array ohne das letzte erstellt ViewController aus dem ursprünglichen Array. – dylansturg