将FlyOutItem的IsVisible属性设置为False会导致iOS 14.5中的应用程序崩溃



以下是FlyoutItem的一个片段,如果用户登录,则需要在其中显示项目。如果登录过程成功,登录过程将ShowAuthorizedRoutes设置为true。

<FlyoutItem Title="Benefits Summary" IsVisible="{Binding ShowAuthorizedRoutes}">
<ShellContent Route="BenefitsSummary" ContentTemplate="{DataTemplate local:BenefitsSummaryPage}" />
<FlyoutItem.FlyoutIcon>
<FontImageSource FontFamily="FontAwesome5154Solid" 
Glyph="{x:Static fontAwesome:FontAwesomeIcons.DollarSign}" 
Color="{x:StaticResource Secondary}"
Size="Medium">
</FontImageSource>
</FlyoutItem.FlyoutIcon>
</FlyoutItem>

上面的片段显示了Shell中的一个FlyouItems。外壳中总共有7个项目。除了图标、路线和模板之外,它们是相同的。最后两个项目没有固定。因此,它们不绑定到ShowAuthorizedRoutes。因此,需要切换5个项目的可见性。

登录成功后,一切都会按预期进行。显示所有项目。然而,一旦ShowAuthorizedRoutes在注销时设置为FALSE,该应用程序在iOS 14.5中试图隐藏安全项目时就会崩溃。

应用程序中心注册以下崩溃报告。

";尝试从在"更新"之前仅包含2行的部分0中删除行5

Shell对象似乎正在尝试删除已删除的项目。

如果是iOS 15或更高版本,则可以正常工作。它也适用于Android(任何版本(。

有什么建议可以在iOS 14上解决这个问题吗?谢谢你的帮助!

如果试图将逻辑转移到代码后面,会发生什么?

尝试以下代码,将其放入AppShell中。

if (ShowAuthorizedRoutes)
{
foreach(ShellItem item in this.Items)
{
item.IsVisible = true;
}
}
else
{
foreach (ShellItem item in this.Items)
{
if (item.Title == "A" || item.Title == "B" ....)
{
item.IsVisible = false;
}      
}
}

相关内容

  • 没有找到相关文章

最新更新