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

MAUI iOS应用Flyout菜单跳转至More页面问题求助

MAUI Shell iOS端部分菜单点击跳转至More页面问题解决

我开发的MAUI应用中,Android端侧滑菜单运行正常,但iOS端从第5个菜单「Pickup/Dropoff」到最后一个「Settings」,点击任意菜单都会跳转到「More」页面,该页面列出了这些菜单。相关代码如下:

var flyoutItem = new FlyoutItem()
{
    Title = "Dashboard",
    Route = nameof(ParentDashboard),
    FlyoutDisplayOptions = FlyoutDisplayOptions.AsMultipleItems,
    Items =
    {
        new ShellContent
        {
            Title = "Dashboard",
            FlyoutIcon = "home",
            ContentTemplate = new DataTemplate(typeof(ParentDashboard)),
        },
        new ShellContent
        {
            Title = "Teachers",
            FlyoutIcon = "parents",
            ContentTemplate = new DataTemplate(typeof(Teachers))
        },
        new ShellContent
        {
            Title = "Messages",
            FlyoutIcon = "chat",
            ContentTemplate = new DataTemplate(typeof(RecentMessagesPage)),
        },
        new ShellContent
        {
            Title = "Events & Notices",
            FlyoutIcon = "events",
            ContentTemplate = new DataTemplate(typeof(Events))
        },
        new ShellContent
        {
            Title = "Pickup/Dropoff",
            FlyoutIcon = "car",
            ContentTemplate = new DataTemplate(typeof(PickupDropoffRequestsPage)),
        },
        new ShellContent
        {
            Title = "Attendance",
            FlyoutIcon = "homework",
            ContentTemplate = new DataTemplate(typeof(ParentStudentAttendancePage))
        },
        new ShellContent
        {
            Title = "Homework",
            FlyoutIcon = "homework",
            ContentTemplate = new DataTemplate(typeof(StudentHomeworks))
        },
        new ShellContent
        {
            Title = "Notifications",
            FlyoutIcon = "notifications",
            ContentTemplate = new DataTemplate(typeof(NotificationsPage))
        },
        new ShellContent
        {
            Title = "My School",
            FlyoutIcon = "school",
            ContentTemplate = new DataTemplate(typeof(SchoolProfile))
        },
        new ShellContent
        {
            Title = "Settings",
            FlyoutIcon = "settings",
            ContentTemplate = new DataTemplate(typeof(SettingsPage))
        },
    }
};

问题原因

iOS平台的Shell组件对单个FlyoutItem内的ShellContent数量有默认限制(最多4个),当数量超过4个时,会自动将多余的项折叠到「More」菜单中。Android平台没有这个限制,因此两端表现不一致。

解决方案

最直接的解决方式是将原本放在同一个FlyoutItem下的ShellContent拆分到多个独立的FlyoutItem中,避免单个FlyoutItem下的项数超过4个。修改后的代码示例如下:

// 为每个页面创建独立的FlyoutItem
Shell.Items.Add(new FlyoutItem
{
    Title = "Dashboard",
    FlyoutIcon = "home",
    Route = nameof(ParentDashboard),
    Items = { new ShellContent { ContentTemplate = new DataTemplate(typeof(ParentDashboard)) } }
});

Shell.Items.Add(new FlyoutItem
{
    Title = "Teachers",
    FlyoutIcon = "parents",
    Route = nameof(Teachers),
    Items = { new ShellContent { ContentTemplate = new DataTemplate(typeof(Teachers)) } }
});

Shell.Items.Add(new FlyoutItem
{
    Title = "Messages",
    FlyoutIcon = "chat",
    Route = nameof(RecentMessagesPage),
    Items = { new ShellContent { ContentTemplate = new DataTemplate(typeof(RecentMessagesPage)) } }
});

Shell.Items.Add(new FlyoutItem
{
    Title = "Events & Notices",
    FlyoutIcon = "events",
    Route = nameof(Events),
    Items = { new ShellContent { ContentTemplate = new DataTemplate(typeof(Events)) } }
});

Shell.Items.Add(new FlyoutItem
{
    Title = "Pickup/Dropoff",
    FlyoutIcon = "car",
    Route = nameof(PickupDropoffRequestsPage),
    Items = { new ShellContent { ContentTemplate = new DataTemplate(typeof(PickupDropoffRequestsPage)) } }
});

// 依次添加剩余页面的FlyoutItem...

这样修改后,iOS端的每个菜单都会作为独立项显示在侧滑菜单中,点击时直接跳转到对应页面,不会再被折叠到「More」菜单里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:57:07