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

时间:2018-05-28 07:00:38

标签: c# xamarin xamarin.forms

我正在研究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项目的家庭作业页面中设置标题时,它设置在底部的标签文字而不是Navigatoinbar标题

在HomeWork.xaml.cs页面

下面
public Homework ()
{
    InitializeComponent ();
    Title = "Homework";
}

这是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>

有关详细信息,请参见下面的屏幕截图

enter image description here

下面标签文字的标题设置

enter image description here

1 个答案:

答案 0 :(得分:2)

在这里,我想出了如何将页面名称设置为标题。在我们的TabbedPage(PCL)中需要添加一些代码

 this.CurrentPageChanged += CurrentPageHasChanged;     

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

然而,随着导航栏标题,它也正在更改标签文本。