C# 如何将页面名称显示为导航栏标题iOS PageRenderer
我正在研究Xamarin.Forms。在iOSC# 如何将页面名称显示为导航栏标题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
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屏幕截图。