Xamarin Forms Shell Hamburger-Menü wird auf iOS bei der ersten Navigation nicht angezeigt

Aug 20 2020

Ich habe eine Xamarin Forms Shell-Anwendung mit einem Hamburger-Menü. Wenn ich die App öffne, kann ich das Hamburger-Menü auf meinem iPhone nicht sehen (aber auf meinem Android). Wenn ich irgendwo navigiere und zurück gehe, erscheint das Hamburger-Symbol wie erwartet. Für die Handhabung des Hamburger-Menüs verlasse ich mich auf den standardmäßig generierten Code des App-Shell-Templates und habe dem Menü nur einige weitere Elemente hinzugefügt.

Wie kann ich der Shell sagen, dass sie meine Menüsymbole immer anzeigen soll?

Github-Link zum Projekt:https://github.com/NPadrutt/MoneyFox.Windows/tree/mobile-redesign

Antworten

1 LucasZhang-MSFT Aug 20 2020 at 18:04

Es wird durch den Custom Renderer verursacht.

in MoneyFox.iOS ->Renderer->CustomContentPageRenderer .

        ToolbarList.Sort((i1, i2) =>
                         {
                             return i1.Priority > i2.Priority
                                    ? -1 : 1;
                         });

        foreach(ToolbarItem itm in ToolbarList)
        {
            if(itm.Priority < 0)
                LeftNavList.Add(itm.ToUIBarButtonItem());
            else
                RightNavList.Add(itm.ToUIBarButtonItem());
        }

        navigationItem.SetLeftBarButtonItems(LeftNavList.ToArray(), false);
        navigationItem.SetRightBarButtonItems(RightNavList.ToArray(), false);

Der obige Code sortiert das Element in NavigationBar neu. Was das Problem verursachen wird. Die einfachste Lösung ist, den Renderer nicht zu verwenden. In dem Fall scheint es keine offensichtliche Wirkung zu haben.

//[assembly: ExportRenderer(typeof(ContentPage), typeof(CustomContentPageRenderer))]