2017-10-20 3 views
0

Wir beginnen mit einer Xamarin.Forms App, und es wird einige Seiten geben und die Navigation zwischen den Seiten wird komplett von der App gehandhabt werden - speziell gibt es keine Zurück-Taste, Das sollte kein Problem sein, da wir nur die Veröffentlichung für iOS planen.Xamarin Seitennavigation (wieder)

Die erste Seite, auf die der Benutzer trifft, ist die Anmeldeseite. Sobald er eingeloggt ist, wird die Startseite aufgerufen. Um diesen Übergang durchzuführen, rufe ich einfach

LoginPage.Navigation.PushModalAsync(HomePage) 

und das ist in Ordnung.

Jetzt, wenn auf der Startseite, drücken Sie die Schaltfläche Abmelden, ich könnte PopModalAsync() aufrufen, das Problem ist, dass die Schaltfläche Abmelden auf allen Seiten existiert, so könnte der Benutzer einen Pfad wie folgt gefolgt haben:

Anmelden -> Startseite -> erstellen -> Format -> drucken -> Abmelden

und ich muß sofort zum Anmeldebildschirm zurück springen.

So auf der Startseite, wenn der Benutzer die Logout-Button drückt, habe ich versucht,

ApplicationHomePage.Navigation.PushModalAsync(LoginPage); 

Aufruf bekam aber eine Ausnahme:

System.InvalidOperationException: Page must not already have a parent. 

Also nur zum Spaß dachte ich, ich würde versuchen, die einfache Lösung:

LoginPage.Parent = null; 
ApplicationHomePage.Navigation.PushModalAsync(LoginPage); 

ich bin nie eine zurück-Taste, und das iPad nicht ein, also die Zusammenarbeit haben, gehen Die Navigationstacks sind nicht wirklich wichtig (richtig?)

Ist diese Methode der Navigation "legal"? Wird es mir ein Problem bereiten, das ich gerade nicht sehe?

+1

Haben Sie Ihre gesamte App als Modal angezeigt scheint eine schlechte Idee. Ich würde stattdessen Ihre HomePage (oder einen Platzhalter) als Root starten und Login als modal anzeigen. Melden Sie sich nach dem Anmelden ab. Wenn sie sich abmelden, klicken Sie auf root und zeigen Sie das Modal erneut an. Oder es gibt viele andere Ansätze, die Sie verwenden könnten. – Jason

Antwort