1

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

CoreMethods.SwitchOutRootNavigation(NavStacks.LoginNavStack);

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

作为测试,我创建了一个带有注销按钮的空页面/页面模型,并将空页面模型添加到 3 个选项卡式容器中。多次重复登录、注销、登录场景,我注意到无论我从哪个选项卡单击注销按钮(记住它显示在每个选项卡上),这是重新验证后第一个显示的选项卡(作为选定的选项卡)。

我不确定为什么会发生这种情况,但我正在寻找方法让容器中的第一个选项卡始终是向用户显示的第一个选项卡;所以基本上是在寻找想法。

4

1 回答 1

0

有同样的问题,并且 FreshMVVM >= v2.2 引入了一个新SwitchSelectedTab<T>CoreMethods类方法。

因此,在您注销并将根导航切换回与登录相关的导航堆栈之前,请切换到您希望在成功登录后出现的选项卡。IE:

CoreMethods.SwitchSelectedTab< _YOUR_LANDING_PageModel >();

于 2019-11-25T22:02:25.883 回答