【发布时间】: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