【问题标题】:Removing back arrow in navigation bar keeping back button title删除导航栏中的后退箭头保留后退按钮标题
【发布时间】:2018-11-30 10:38:41
【问题描述】:

我有 xamarin forms ios 应用程序,我需要删除导航栏中的后退箭头,但应该显示标题,并且当用户单击该后退按钮标题时,它应该导航到上一个视图。 我尝试使用`

NavigationPage.SetBackButtonTitle(this, "Cancel");

NavigationPage.SetHasBackButton(this, false);

但是返回的箭头还在显示,请问为什么只有文字Cancel没有<symbol?

【问题讨论】:

  • 听起来你应该用模态页面替换分层导航。
  • @EvZ,我尝试使用 Navigation.PushModalAsync 而不是 Navigation.PushAsync 但没有运气,Navigation.PushModalAsync 使用此删除整个导航栏。
  • 这是预期的结果,您必须创建一个模态标题视图并将其放在页面顶部。
  • 你把那段代码放在哪里了?
  • @Daniel,我在第一个视图中从 xaml.cs 构造函数从这里导航到另一个视图,我想在第二个视图中删除/隐藏那个后退箭头。

标签: ios xamarin xamarin.forms navigationbar


【解决方案1】:

我通过添加自定义渲染器解决了我的问题,如下所示

public override void ViewWillAppear(bool animated)
{      
    base.ViewWillAppear(animated);
    this.NavigationController.TopViewController.NavigationItem.LeftBarButtonItem =new UIBarButtonItem(“Cancel”, UIBarButtonItemStyle.Plain, (sender, args) => { });      
}

【讨论】:

    【解决方案2】:

    在您的AppDelegate.cs 文件中,在FinishedLaunching 方法中添加以下行:

    UINavigationBar.Appearance.BackIndicatorImage = new UIImage();
    UINavigationBar.Appearance.BackIndicatorTransitionMaskImage = new UIImage();
    

    但是,这将为每个页面删除它。如果你只想要一个页面,我会建议像 EvZ 已经提到的那样:使用模式页面或找到另一种方式。

    另一种方法是将上述行设置为null,这将恢复正常箭头。但这意味着实现自定义渲染器、依赖服务或类似的东西。

    【讨论】:

      【解决方案3】:

      移除导航栏并在导航位置使用image/header并写入image/Headernavigation title... p>

      图像 onclick 事件写入回写命令

      【讨论】:

      • protected override bool OnBackButtonPressed() { if (_browser.CanGoBack) { _browser.GoBack(); return true; } else { //await Navigation.PopAsync(true); base.OnBackButtonPressed(); return true; } }