You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI Shell侧滑菜单第5项仅iOS跳转至更多菜单,如何禁用?

MAUI Shell Flyout iOS 第5项跳转至“更多”页面的解决办法

问题原因

iOS平台上,MAUI Shell的FlyoutItem在设置FlyoutDisplayOptions.AsMultipleItems时,默认会将超过4个的ShellContent项自动折叠到“更多”菜单中,这是iOS的专属行为,Android无此限制。同时代码中后续两个无标题的ShellContent会占用菜单项计数,导致前面的项被提前触发折叠逻辑。

解决方案

  1. 拆分独立FlyoutItem:将需要在侧滑菜单显示的菜单项,分别创建独立的FlyoutItem并添加到Shell的Items集合中,避免单组FlyoutItem内ShellContent数量超标。
  2. 隐藏路由专用项:对仅用于页面跳转路由、不需要显示在侧滑菜单的ShellContent,放入不可见的FlyoutItem中,避免占用菜单项名额。

修改后的代码

using Meldcode_Core.Views;

namespace Meldcode_Core
{
    public partial class AppShell : Shell
    {
        public AppShell()
        {
            InitializeComponent();

            int flow = FlowChoicePage.flowChoice;

            // 为每个需要显示的菜单项创建独立FlyoutItem
            Items.Add(new FlyoutItem
            {
                Title = "Noodsituatie",
                Content = new WebViewPage(2, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Huiselijk geweld",
                Content = new WebViewPage(3, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Geweld- of zedendelict",
                Content = new WebViewPage(4, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Seksueel gedrag kinderen",
                Content = new WebViewPage(5, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Download het protocol",
                Content = new WebViewPage(6, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Informatie",
                Content = new WebViewPage(7, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "FAQ",
                Content = new WebViewPage(8, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Veilig Thuis",
                Content = new WebViewPage(9, flow)
            });
            Items.Add(new FlyoutItem
            {
                Title = "Onderwijs of Kinderopvang",
                Content = new FlowChoicePage()
            });

            // 存放仅用于路由的ShellContent,设置为不可见
            Items.Add(new FlyoutItem
            {
                IsVisible = false,
                Items =
                {
                    new ShellContent() { Route = "Onderwijs", Title = "", Content = new WebViewPage(1, 2) },
                    new ShellContent() { Route = "Kinderopvang", Title = "", Content = new WebViewPage(1, flow) }
                }
            });
        }
    }
}

内容的提问来源于stack exchange,提问作者Twan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 13:30:25