【问题标题】:Xamarin Page Navigation (again)Xamarin 页面导航(再次)
【发布时间】:2017-10-21 18:01:50
【问题描述】:

我们从 Xamarin.Forms 应用开始,会有很多页面,页面之间的导航将完全由应用处理 - 特别是没有返回按钮,这不应该是问题,因为我们只计划发布 iOS。

用户遇到的第一个页面是登录页面,登录后他们会转到主页。要执行此转换,我只需调用

LoginPage.Navigation.PushModalAsync(HomePage)

没关系。

现在,如果在主页上,他们按下注销按钮,我可以调用 PopModalAsync(),问题是注销按钮存在于所有页面上,因此用户可能遵循如下路径:

登录 -> 主页 -> 创建 -> 格式化 -> 打印 -> 注销

我需要立即跳转到登录屏幕。

所以在主页上,如果用户按下注销按钮,我尝试调用

ApplicationHomePage.Navigation.PushModalAsync(LoginPage);

但有异常:

System.InvalidOperationException: Page must not already have a parent.

所以只是为了好玩,我想我会尝试简单的解决方案:

LoginPage.Parent = null;
ApplicationHomePage.Navigation.PushModalAsync(LoginPage);

我永远不会有后退按钮,而 iPad 也没有,所以导航堆栈的内容并不重要(对吗?)

这种导航方式“合法”吗?会不会给我带来一些我现在看不到的问题?

【问题讨论】:

  • 让整个应用程序显示为模态似乎是个坏主意。我会改为启动您的主页(或一些占位符)作为您的根,并将登录显示为模式。他们登录后,关闭模式。当他们注销时,弹出到根目录,然后再次显示模式。或者您可以使用许多其他方法。

标签: xamarin xamarin.ios navigation


【解决方案1】:

I think you can take a look to this

您不应将登录页面添加到 NavigationStack。更改 MainPage 属性是一个很好的解决方案...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多