Xamarin Forms Shellハンバーガーメニューは、最初のナビゲーションでiOSに表示されません

Aug 20 2020

ハンバーガーメニューを備えたXamarinFormsShellアプリケーションがあります。アプリを開くと、iPhone(Androidでは)にハンバーガーメニューが表示されません。どこかに移動して戻ると、期待どおりにハンバーガーアイコンが表示されます。ハンバーガーメニューの処理については、アプリシェルテンプレートのデフォルトで生成されたコードに依存し、メニューにさらにいくつかの項目を追加しました。

メニューアイコンを常に表示するようにシェルに指示するにはどうすればよいですか?

プロジェクトへのGithubリンク: https://github.com/NPadrutt/MoneyFox.Windows/tree/mobile-redesign

回答

1 LucasZhang-MSFT Aug 20 2020 at 18:04

カスタムレンダラーが原因です。

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);

上記のコードは、NavigationBarのアイテムを再ソートします。これが問題の原因になります。最も簡単な解決策は、レンダラーを使用しないことです。明らかな効果がないように思われる場合。

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