我正在研究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>
有关详细信息,请参见下面的屏幕截图
下面标签文字的标题设置
答案 0 :(得分:2)
在这里,我想出了如何将页面名称设置为标题。在我们的TabbedPage(PCL)中需要添加一些代码
this.CurrentPageChanged += CurrentPageHasChanged;
protected void CurrentPageHasChanged(object sender, EventArgs e)
{
this.Title = this.CurrentPage.Title;
}
然而,随着导航栏标题,它也正在更改标签文本。