【问题标题】:Xamarin Forms Shell Hamburger menu does not show on iOS on first navigationXamarin Forms Shell Hamburger 菜单在第一次导航时不显示在 iOS 上
【发布时间】:2020-12-09 13:24:43
【问题描述】:

我有一个带有汉堡菜单的 Xamarin Forms Shell 应用程序。当我打开应用程序时,我在 iPhone 上看不到汉堡菜单(但在我的 Android 上)。当我导航到某个地方并返回时,汉堡包图标会按预期显示。为了处理汉堡菜单,我依赖应用程序外壳模板的默认生成代码,只是在菜单中添加了一些其他项目。

如何让 shell 始终显示我的菜单图标?

项目的 Github 链接:https://github.com/NPadrutt/MoneyFox.Windows/tree/mobile-redesign

【问题讨论】:

  • 您项目中的 XF 版本是多少?这似乎是旧版本的问题。
  • 我使用的是 4.8.0.1269 版本
  • 你能分享一个样本,以便我可以直接在我这边测试吗?
  • 我正在尝试创建一个示例,但到目前为止我无法在新项目中重现它。如果有任何帮助,原始项目是开源的。我把链接放在原帖里。
  • 你能分享你的导航代码吗?加上你的 shell 创建和基本的 shell 结构?

标签: xamarin.forms


【解决方案1】:

这是由自定义渲染器引起的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    相关资源
    最近更新 更多