Xamarin Forms - 如何在导航栏中去除返回按钮

37
假设应用程序的第一页是登录页面,然后它会带我进入主菜单页面,有没有一种方法可以去掉主菜单导航栏中的返回按钮,比如说去掉登录页面的堆栈?
谢谢。

你能给我们展示一下你的登录页面的代码吗? - Sten Petrov
4个回答

72
在 Xamarin.Forms 1.3 及更高版本中,您可以使用。
NavigationPage.SetHasBackButton(this, false);

Xaml 中,你可以添加:

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

1
@shakin_hand_incision 更新了我的回答,包括使用 XAML 的方法。 - JKennedy
这似乎仍然呈现与返回按钮相关联的空格(只是没有返回按钮可见)。有没有办法摆脱这个空间? - jbyrd
1
哦,我刚刚发现了自己问题的答案 - 要完全隐藏导航栏,在你的内容页构造函数中,你应该写NavigationPage.SetHasNavigationBar(this, false); - jbyrd
编译后的 XAML 不接受 NavigationPage.HasBackButton="False"。 - Nuri YILMAZ
1
NavigationPage.HasBackButton="False" 在 Visual Studio 中编译成功并且运行良好。 - Mohan Perera
注意:当在Android上按下返回按钮时,用户仍然可以返回。 - FoxyError

13

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

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


2
如果我想保留导航栏并具有工具栏项怎么办? - user3841879
1
工具栏项目应该为页面定义,而不是导航控制器。 - Sten Petrov
1
虽然您说得没错,返回按钮确实不会出现,但这并不是仅仅移除工具栏按钮的最佳解决方案。它会改变更多东西。 - ggkfox

9

有两种方法可以取消“返回”按钮:
1)您可以使用以下代码从Xaml中删除导航栏,使用Xamarin.Forms实现。

NavigationPage.SetHasNavigationBar (this, false);

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

2)按照以下步骤进行操作:

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

希望这可以帮助你!


2
你也可以在ContentPages的XAML中使用NavigationPage.HasBackButton="False" - Sadra M.

4
通过使用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 ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接