我们正在开始使用Xamarin.Forms应用程序,并且会有相当多的页面,页面之间的导航将完全由应用程序处理 - 特别是没有后退按钮,这不应该是问题,因为我们只打算发布iOS版。
用户遇到的第一页是登录页面,登录后会转到主页。要执行此转换,我只需调用
LoginPage.Navigation.PushModalAsync(HomePage)
那没关系。
现在,如果在主页上按下Logout按钮,我可以调用PopModalAsync(),问题是所有页面上都存在Logout按钮,因此用户可以按照这样的路径:
登录 - >首页 - >创建 - >格式 - >打印 - >注销
我需要立即跳转到登录屏幕。
所以在主页上,如果用户按下Logout按钮,我试着调用
ApplicationHomePage.Navigation.PushModalAsync(LoginPage);
但有例外:
System.InvalidOperationException: Page must not already have a parent.
所以只是为了好玩,我想我会尝试简单的解决方案:
LoginPage.Parent = null;
ApplicationHomePage.Navigation.PushModalAsync(LoginPage);
我永远不会有后退按钮,iPad也没有,所以导航堆栈的内容并不重要(对吗?)
这种导航方式是“合法的”吗?它会给我带来一些我现在没看到的问题吗?
答案 0 :(得分:1)
I think you can take a look to this
您不应该将登录页面添加到NavigationStack。更改MainPage属性是一个很好的解决方案...