MAUI Shell侧滑菜单第5项仅iOS跳转至更多菜单,如何禁用?
MAUI Shell Flyout iOS 第5项跳转至“更多”页面的解决办法
问题原因
iOS平台上,MAUI Shell的FlyoutItem在设置FlyoutDisplayOptions.AsMultipleItems时,默认会将超过4个的ShellContent项自动折叠到“更多”菜单中,这是iOS的专属行为,Android无此限制。同时代码中后续两个无标题的ShellContent会占用菜单项计数,导致前面的项被提前触发折叠逻辑。
解决方案
- 拆分独立FlyoutItem:将需要在侧滑菜单显示的菜单项,分别创建独立的
FlyoutItem并添加到Shell的Items集合中,避免单组FlyoutItem内ShellContent数量超标。 - 隐藏路由专用项:对仅用于页面跳转路由、不需要显示在侧滑菜单的
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
相关产品推荐
相关产品推荐

