NavigationBar 和导航按钮中的单独标题
Posted
技术标签:
【中文标题】NavigationBar 和导航按钮中的单独标题【英文标题】:Separate title in NavigationBar and navigation buttons 【发布时间】:2011-03-17 11:45:00 【问题描述】:嘿,我在UINavigationController
中有一堆UIViewController
s。通常标题(或 NavigationItem 的标题)决定了 NavigationBar 中显示的标题(显示在顶部)和所有导航按钮,例如导航中的后退按钮酒吧本身。
现在我计划在 NavigationBar 的标题中添加更多信息,同时仍然保持这些按钮标签简短明了(例如视图的标题是“概览”,而按钮应该只是显示“概览”)。
我目前正在尝试通过更改 ViewWillAppear
和 ViewWillDisappear
上 NavigationItem 的标题来实现此目的。这很好用,但可以看到文本变化的时刻(可能是由于动画)。我也尝试了 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";
【问题讨论】:
【参考方案1】:如果我理解正确的话,我认为有一个现成的:
在视图控制器的导航项上设置 backBarButtonItem。
【讨论】:
这需要我在 next 视图中设置按钮标题;所以我不能在其控制器内更改视图 A 的按钮标题,但必须在我可能从 A 推送到导航的每个视图中都这样做。所以我需要更改每个 可能的从属视图控制器来检查父控制器并根据存在的父控制器更新按钮。 不,你在视图控制器 A 上设置了 backBarButtonItem。如果 A 是前一个视图控制器,“backBarButtonItem”定义了视图控制器 B 将显示的内容。也许有点违反直觉,但你去吧。 哇,太好了。这真的奏效了!没想到它会这样工作。非常感谢!以上是关于NavigationBar 和导航按钮中的单独标题的主要内容,如果未能解决你的问题,请参考以下文章
点击 NavigationBar 和 NavigationBar 项时 UIPopoverController 不会关闭