2016-07-04 11 views
1

Ich versuche, eine Anmeldeseite für eine MvvmCross-Forms-Anwendung zu implementieren. Wenn die Anwendung gestartet wird, sollte dem Benutzer ein Anmeldebildschirm angezeigt werden, wenn er nicht angemeldet ist, oder wenn er auf die Homepage verweist. Der Benutzer wird bei der Anmeldung zur Startseite weitergeleitet und beim Abmelden von der Startseite zur Anmeldeseite weitergeleitet. Ziemlich normales Zeug - was Sie von einer App mit Authentifizierung erwarten würden.Login-Seite mit Xamarin MvvmCross-Forms - verhindert die Zurück Navigation auf Android

Ich habe dies mit MvvmCross ViewModel Navigation implementiert, aber jede Navigation ermöglicht es dem Benutzer, die Schaltfläche "Zurück" in der Titelleiste auf Android drücken, oder verwenden Sie die Schaltfläche Hardware zurück. Als Benutzer würde ich davon ausgehen, dass die Homepage nach der Anmeldung die "root" -Seite ist, und dass ich nur dann zum Anmeldebildschirm zurückkehren kann, wenn ich mich explizit dazu entscheide, mich abzumelden.

Ich verstehe, dass eine typische Vorgehensweise in Xamarin Forms darin besteht, einen benutzerdefinierten Page Presenter im Droid-Projekt zu erstellen, der Aufrufe an Show() abfängt und den Backstack bei der Navigation zur Homepage oder Anmeldeseite löscht (zB die oberste Antwort für Xamarin MvvmCross Android Prevent Back Button returning to previous View). Es scheint jedoch, dass MvvmCross-Forms absichtlich verhindert, dass Sie diese Funktionalität implementieren - die MvxFormsDroidPagePresenter Klasse erbt von der plattformübergreifenden MvxFormsPagePresenter anstelle der Android-spezifischen .

Ich kann zwei Optionen sehen - entweder versuchen und verwenden Sie ein einziges ViewModel/View für die Anmeldung und die Homepage, oder reißen Sie einige der MvxAndroidViewPresenter Funktionalität und legen Sie es in meinem eigenen benutzerdefinierten Android-Presenter. Wie würde dieses Verhalten idiomatisch in MvvmCross-Forms implementiert?

+0

Sie können versuchen, https://github.com/conceptdev/xamarin-forms-samples/tree/master/LoginDemo zu verwenden – Vishnu

Antwort

0

Der Ansatz ist falsch. Was Sie tun möchten, ist Ihre Homepage als root und sofort danach ModalPush für Login-Seite für den Fall, dass Benutzer nicht angemeldet ist. Wenn sich der Benutzer anmeldet tun Sie ModalPop und Sie sind zurück zu root, die Startseite ist.

Wenn Benutzer angemeldet ist, dann sind Sie genau dort, wo Sie sein sollen - root, die Startseite.

Hoffe, das hilft.

Verwandte Themen