Xamarin.forms Xamarin表单-摆脱导航栏中的后退按钮

Xamarin.forms Xamarin表单-摆脱导航栏中的后退按钮,xamarin.forms,Xamarin.forms,假设应用程序中的第一个页面是登录页面,然后我需要完成主菜单屏幕,有没有办法摆脱主菜单导航栏中的后退按钮,比如摆脱登录页面堆栈 谢谢如果将登录页代码中的导航.PushAsync(第页)替换为导航.PushModalAsync(第页),则可以避免使用“后退”按钮。如果这不适用,请发布一些代码 这与导航在底层操作系统中的工作方式有关(至少在iOS中是这样)-有一个导航控制器,用于页面之间的切换,并具有上一屏幕的跟踪,以便用户可以返回。有两种方法可以取消“返回”按钮: 1) 您可以使用Xamarin从X

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


谢谢

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


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

有两种方法可以取消“返回”按钮:
1) 您可以使用Xamarin从Xaml中删除导航栏

NavigationPage.SetHasNavigationBar (this, false);
其中
表示当前页面/表单实例

2) 遵循以下提到的步骤

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

希望这有帮助

通过使用CustomRenderer,您可以在视图中调用此函数,该函数将显示在自定义视图控制器中

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 ...
}

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

NavigationPage.SetHasBackButton(this, false);
Xaml
中,您可以添加:

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


如果我想让导航栏中有工具栏项,该怎么办?工具栏项应该为页面而不是导航控制器定义。尽管您认为“后退”按钮不存在,但这并不是简单删除工具栏按钮的最佳解决方案。它会改变的不止这些。你能给我们看一下你登录页面的代码吗?@shakin_hand_inction更新了我的答案,将
XAML
way这似乎仍然会呈现与后退按钮相关的空间(只是没有后退按钮可见)。有没有办法摆脱这个空间?哦,刚刚找到了我自己问题的答案-要完全隐藏导航栏,在内容页构造函数中,您可以编写
NavigationPage.SetHasNavigationBar(这个,false)
compiled xaml不支持NavigationPage.HasBackButton=“False”
NavigationPage.HasBackButton=“False”
编译成功并在visual studio中运行良好。您也可以在ContentPages xaml中执行
NavigationPage.HasBackButton=“False”