35

假设应用程序的第一页是登录页面,然后我需要做主菜单屏幕,有没有办法摆脱主菜单导航栏中的后退按钮,比如摆脱登录页面堆栈?

谢谢你

4

4 回答 4

70

在 Xamarin.Forms 1.3 和更高版本中,您可以使用

NavigationPage.SetHasBackButton(this, false);

Xaml您可以添加:

<ContentPage ....NameSpaces etc....
    NavigationPage.HasBackButton="False"
    Title="MyPage">
</ContentPage>
于 2015-01-22T11:02:17.457 回答
12

如果您将登录页面代码中的替换Navigation.PushAsync(page)为 ,则可以避免使用“后退”按钮。Navigation.PushModalAsync(page)如果这不适用,请发布一些代码

这与导航在底层操作系统中的工作方式有关(至少在 iOS 中是这样) - 有一个导航控制器用于在页面之间相互转换并跟踪前一个屏幕,以便用户可以返回。

于 2014-07-24T14:25:53.650 回答
8

有 2 种方法可以摆脱后退按钮:
1)您可以使用以下代码使用 Xamarin.Forms 从 Xaml 中删除导航栏

NavigationPage.SetHasNavigationBar (this, false);

wherethis代表当前页面/表单实例。

2)按照下面提到的步骤

  • ContentPage使用登录页面的普通实例加载应用程序时导航到登录页面
  • 从登录页面导航到主页,PushModalAsync并提供主页实例为NavigationPage
  • 然后从所有其他页面,您可以使用 PushAsync,它可以让您导航到所有页面而不会出现任何错误。

希望这可以帮助!

于 2014-10-10T11:30:44.743 回答
2

通过使用 CustomRenderer,您可以在自定义视图控制器的 ViewWillAppear 中调用此函数

public override void ViewWillAppear (bool animated)
{
    base.ViewWillAppear (animated);
    this.ParentViewController.NavigationItem.SetHidesBackButton (true, false); 
    //remember to use ParentViewController to reference to the NavigationViewController (if your contentPage is direct under a navigation controller. I don't know why but Xamarin must have a bug with SetHidesBackButton. If you call with this.NavigationItem.SetHidesBackButton(...), it should not work. 
    ... other implements here ...
}
于 2014-12-22T12:48:40.120 回答