C# 如何将页面名称显示为导航栏标题iOS PageRenderer

C# 如何将页面名称显示为导航栏标题iOS PageRenderer,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我正在研究Xamarin.Forms。在iOSPageRenderer中,我需要获取正在打开的页面名称,以便在UINavigationbar上设置该名称。我试过了,就像下面一样 public class ContentPageRenderer : PageRenderer { string pageName = string.Empty, pageName2 = string.Empty; public new ContentPage Element

我正在研究Xamarin.Forms。在iOS
PageRenderer
中,我需要获取正在打开的页面名称,以便在
UINavigationbar
上设置该名称。我试过了,就像下面一样

public class ContentPageRenderer : PageRenderer
    {
        string pageName = string.Empty, pageName2 = string.Empty;
        public new ContentPage Element
        {
            get { return (ContentPage)base.Element; }
        }
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);  
            if (e.NewElement != null)
            {
                var att = new UITextAttributes();
                att.Font = UIFont.FromName("Space Age", 24);
                UINavigationBar.Appearance.SetTitleTextAttributes(att);
                pageName = e.GetType().Name;
                pageName2 = App.Current.MainPage.Title.ToString();
            }
        }
        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);

            if (NavigationController == null)
                return;
            var navigationItem = NavigationController.TopViewController.NavigationItem;
            UIBarButtonItem backButton = new UIBarButtonItem();
            backButton.Title = "back"; //Your BackBurron Title here
            NavigationController.NavigationBar.TopItem.BackBarButtonItem = backButton;

            //setting title
            navigationItem.Title = "test Title"  //pageName;
        }
    }
在代码
pageName
pageName2
中,我没有让当前页面将该值设置为
UINavigationbar的标题

当我尝试在PCL项目的作业页面中设置标题时,它是在底部的选项卡文本上设置的,而不是在
导航栏上设置的

在家庭作业.xaml.cs页面下方

public Homework ()
{
    InitializeComponent ();
    Title = "Homework";
}
这是家庭作业.xaml页面

<?xml version="1.0" encoding="utf-8" ?>
<Shared:CToolbarPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             Title="Diary"  
             Icon="dairy"
             xmlns:Shared="clr-namespace:edTheSIS.Shared"                        
             x:Class="edTheSIS.Pages.Homework">

    <ContentPage.BindingContext>
            <Shared:MainListView></Shared:MainListView>
        </ContentPage.BindingContext>
    <ListView Margin="0,0,0,0" 
              SeparatorVisibility="Default"    
    </ListView>
</Shared:CToolbarPage>


在这里,我找到了如何将页面名称设置为标题的方法。在我们的选项卡页面(PCL)中,需要添加一些代码

 this.CurrentPageChanged += CurrentPageHasChanged;     

 protected void CurrentPageHasChanged(object sender, EventArgs e)
 {           
   this.Title = this.CurrentPage.Title;
 }

然而,随着导航栏标题的出现,它也在改变选项卡文本。

这里我找到了如何将页面名称设置为标题的方法。在我们的选项卡页面(PCL)中,需要添加一些代码

 this.CurrentPageChanged += CurrentPageHasChanged;     

 protected void CurrentPageHasChanged(object sender, EventArgs e)
 {           
   this.Title = this.CurrentPage.Title;
 }

但是,随着导航栏标题的出现,它也在更改选项卡文本。

为什么要通过自定义渲染器执行此操作?只需设置要导航到的页面的Title属性。这是要显示标题的页面。不需要渲染器。页面标题直接设置在底部的选项卡文本上,正如我在问题中所写的,不是选项卡,而是页面。你能展示一下你在那里做了什么吗?请看我更新的问题。我在其中添加了
家庭作业.xaml
&1屏幕截图。为什么要通过自定义渲染器进行此操作?只需设置要导航到的页面的Title属性。这是要显示标题的页面。不需要渲染器。页面标题直接设置在底部的选项卡文本上,正如我在问题中所写的,不是选项卡,而是页面。你能展示一下你在那里做了什么吗?请看我更新的问题。在这里我添加了
家庭作业.xaml
&1屏幕截图。