在SwitchOutRootNavigation

时间:2018-09-05 05:33:57

标签: xamarin.forms freshmvvm

我有一个Xamarin Forms PCL项目,该项目使用Freshmvvm自定义导航。该应用程序有两个导航容器。一个用于身份验证,另一个是主选项卡式容器。当应用程序启动时,将使用身份验证堆栈。在用户认证之后,将显示第一个标签页,并且用户可以在标签之间成功导航。如果用户单击注销(这是从第二个选项卡页面推送的模式设置页面的操作),我们将使用

切换到身份验证堆栈

CoreMethods.SwitchOutRootNavigation(NavStacks.LoginNavStack);

再次输入登录凭据以重新进行身份验证,这时向用户显示第二个选项卡(应该是第一个选项卡)。此外,单击第一个选项卡也不会显示它。我可以单击第三个选项卡,然后单击第一个选项卡将起作用。

作为测试,我使用注销按钮创建了一个空页面/页面模型,并将该空页面模型添加到3个选项卡式容器中。重复多次登录,注销和登录方案,我注意到无论单击哪个注销选项卡(请记住该选项卡都显示在每个选项卡上),这是重新认证后第一次显示(作为所选选项卡)的选项卡。

我不确定为什么会这样,但是我正在寻找一种方法来始终将容器中的第一个标签设为向用户显示的第一个标签;所以基本上是在寻找想法。

1 个答案:

答案 0 :(得分:0)

存在相同的问题,并且在FreshMVVM> = v2.2的情况下,引入了SwitchSelectedTab<T>类的新方法CoreMethods

因此,在注销并将根导航切换回与登录相关的导航堆栈之前,请对成功登录后希望显示的选项卡进行切换。即:

CoreMethods.SwitchSelectedTab< _YOUR_LANDING_PageModel >();