Ich versuche eine plattformübergreifende App mit C # und Xamarin.Forms zu erstellen. Es enthält ein Ausklappmenü, das in Form eines MasterDetailPage
implementiert ist. Während auf Android eine Schaltfläche mit dem App-Symbol in der oberen linken Ecke vorhanden ist, die die Ausklappseite umschaltet, gibt es auf iOS keine solche Navigationsleiste.
Ich habe es auf das folgende Mindestbeispiel reduziert, das von der Xamarin-Lösungsvorlage "Leere App (Xamarin.Forms Shared)" abgeleitet wurde und die Implementierung der App
-Klasse:
Die Lösung sowie die resultierenden Screenshots finden Sie unter GitHub .
Meine Idee war, einen solchen "Menü" - oder "Zurück" -Button in den iOS-spezifischen Code einzufügen, der window.RootViewController.NavigationController.NavigationBar
innerhalb der AppDelegate
-Klasse modifiziert. Aber window.RootViewController.NavigationController
ist null
.
Das Ersetzen des Rückgabetyps von GetMainPage()
von NavigationPage
anstelle von Page
hilft nicht.
Ich könnte Symbolleistenelemente über MDPage.ToolbarItems.Add(...)
hinzufügen, aber sie erscheinen in der oberen rechten -Ecke.
Ich habe endlich eine Lösung gefunden. Der Code benötigt grundsätzlich zwei kleine Korrekturen:
DetailPage
s in NavigationPage
, aber nicht MasterDetailPage
(siehe # 1, # 2 und # 3 unten). Icon
zu MasterPage
bei iOS hinzu (siehe # 4 unten). Vergiss nicht, die tatsächliche PNG (!) Zu den iOS-Ressourcen. Das Mindestarbeitsbeispiel ist wie folgt:
%Vor%TL; DR
Im Wesentlichen muss Ihre Detail
Seite in eine NavigationPage
eingebunden werden, damit die Zurück-Schaltfläche in iOS erscheint.
Hier ist ein Beispiel, wie ich meine Apps strukturiere.
App.cs
%Vor%MainPage.cs
%Vor%Nachdem Sie dies getan haben, verhält sich Ihre Navigationsleiste wie erwartet und Ihre ActionBar ebenfalls.
Wenn Sie durch die App navigieren möchten, verwenden Sie die statisch definierte Navigation
Tags und Links ios xamarin.forms xamarin master-detail navigationbar