Эй, у меня есть стек UIViewController
с UINavigationController
. Обычно заголовок (или заголовок NavigationItem) решает как заголовок, отображаемый на панели навигации (отображается вверху) , так и все кнопки навигации, например кнопки возврата на панели навигации. сам по себе.
Теперь я планирую поместить немного больше информации в заголовок NavigationBar, но при этом держать ярлыки этих кнопок короткими и краткими (например, заголовок представления « Overview», тогда как кнопки должны просто показать «Обзор»).
В настоящее время я пытаюсь добиться этого, изменив заголовок NavigationItem на ViewWillAppear
и ViewWillDisappear
. Это хорошо работает, но можно увидеть моменты, когда текст меняется (возможно, из-за анимации). Я также пробовал разные комбинации с ViewDidAppear
и ViewDidDisappear
, но эффект был лучшим только при использовании методов Will
. Пример кода для этого показан ниже (класс Example
передается в UINavigationController).
Есть ли лучший способ добиться этого? Может быть, простым изменением заголовков кнопок only или просто прямым изменением заголовка навигации? Или я могу не позволить стандартным механизмам копировать заголовок во все другие экземпляры?
public class Example : UIViewController
{
private int depth;
public Example ( int depth = 0 )
{
this.depth = depth;
this.Title = "Title";
}
public override void ViewDidLoad ()
{
base.ViewDidLoad();
UIButton btn = new UIButton( new RectangleF( 100, 100, 300, 50 ) );
btn.SetTitle( "Duplicate me!", UIControlState.Normal );
btn.TouchDown += delegate(object sender, EventArgs e) {
NavigationController.PushViewController( new Example( depth + 1 ), true );
};
View.Add( btn );
}
public override void ViewWillAppear ( bool animated )
{
base.ViewWillAppear( animated );
this.NavigationItem.Title = String.Format( "Title / {0}", depth );
}
public override void ViewWillDisappear ( bool animated )
{
base.ViewWillDisappear( animated );
this.NavigationItem.Title = "Title";
}
}