Xamarin表单 - 在Nav Bar中摆脱后退按钮

时间:2014-07-24 14:03:26

标签: xamarin.forms

让我们说应用程序中的第一页是登录页面然后我需要进入主菜单屏幕,有没有办法摆脱主菜单导航栏中的后退按钮,就像摆脱了登录页面堆栈?

谢谢

4 个答案:

答案 0 :(得分:57)

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

NavigationPage.SetHasBackButton(this, false);

Xaml中,您可以添加:

<ContentPage ....NameSpaces etc....
    NavigationPage.HasBackButton="False"
    Title="MyPage">
</ContentPage>

答案 1 :(得分:12)

如果您将登录页面代码中的Navigation.PushAsync(page)替换为Navigation.PushModalAsync(page),则可以避免使用“后退”按钮。如果以某种方式不适用

,请发布一些代码

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

答案 2 :(得分:5)

有两种摆脱后退按钮的方法:
1)您可以使用Xamarin.Forms使用下面的代码

从Xaml中删除导航栏
NavigationPage.SetHasNavigationBar (this, false);

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

2)按照以下步骤

  • 当应用加载了正常ContentPage登录页面实例
  • 时,导航到登录页面
  • 使用PushModalAsync从“登录”页面导航到主页面,并将主页面实例提供为NavigationPage
  • 然后从所有其他页面中,您可以使用PushAsync,它可以让您导航到所有页面而不会出现任何错误。

希望这有帮助!

答案 3 :(得分: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 ...
}