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”