【问题标题】:How can I navigate correctly from routes added in the Shell?如何从 Shell 中添加的路线正确导航?
【发布时间】:2021-05-19 15:37:32
【问题描述】:

我尝试使用“/”、“//”和“///”,但都没有成功。

所有代码已移至此gist

【问题讨论】:

  • 你有什么错误吗?您是否遵循 Microsoft Docs 中的相同示例并且无法正常工作?当你导航? TokenPage 在哪里消费/使用?
  • 是的,通过这些示例,我能够更一般地理解,但在实践中却没有。我在示例中看到,您可以使用自定义路由,例如“登录/令牌”,而不是页面本身。但是,由于该应用程序的页面很少,我认为最好将它们用作路线的“名称”。验证登录页面上的字段后,用户将被带到令牌页面,在该页面插入他通过 SMS 收到的内容。
  • 我收到此错误“Shell 无法将页面推送到以下类型:KNotifyMobile.Views.LoginPage。可见模式页面需要是 Xamarin.Forms.ShellSection.GoToAsync 的 NavigationPage”。
  • 你的TokenPage的基类是什么?
  • 从 ContentPage 扩展

标签: c# xaml xamarin.forms routes xamarin.forms.shell


【解决方案1】:

如果您没有在 AppShell 层次结构中使用/实例化TokenPage,那么您可能需要使用Shell.Current.Navigation.PushAsync(new (TokenPage)) 而不是GoToAsync(),因为:

await Shell.Current.GoToAsync("monkeydetails");

在这个例子中,monkeyDetails 路由在层次结构中向上搜索,直到找到匹配的页面。找到页面后,将其推送到导航堆栈。 (source)。

【讨论】:

  • 我调试了它,但它最终还是直接通过了那条线,即使等待。
  • 您能否使用相关代码更新您的问题?包括调用 PushAsync 的方法
  • 我尝试添加更新后的代码,但 stackoverflow 抱怨它有太多代码。我在 github 上创建了这个 gist
  • 我怀疑问题来自代码的其他部分,确认这一点的最佳方法是注释掉所有代码并单独隔离 PushAsync 调用以对其进行测试。
  • 仍然存在的问题是在这个变量_configuration 中,它与银行协商(检查它是否是更新等),但除此之外,当这部分工作时,当它到达TokenPage的导航部分,它仍然直行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
相关资源
最近更新 更多