导航栏和导航按钮中的单独标题

时间:2011-03-17 11:45:01

标签: ios uinavigationcontroller xamarin.ios uinavigationbar

嘿,我在UIViewController内有一堆UINavigationController个。通常标题(或NavigationItem的标题)决定导航栏中显示的标题(显示在顶部)所有导航按钮,例如导航中的后退按钮酒吧本身。

现在我计划在NavigationBar的标题中添加更多信息,同时仍然保持这些按钮标签简洁明了(例如视图的标题是“< Customer name> Overview”,而按钮应该只显示“概述”。

我目前正在尝试通过更改ViewWillAppearViewWillDisappear上的NavigationItem标题来实现此目的。这很有效,但可以看到文本发生变化的时刻(可能是由于动画)。我也尝试过使用ViewDidAppearViewDidDisappear的不同组合,但仅使用Will方法效果最佳。下面显示了一个示例代码(Example类被推送到UINavigationController)。

有没有更好的方法来实现这一目标?也许只需更改按钮标题或直接更改导航标题?或者我可以阻止标准机制将标题复制到所有其他实例吗?

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 个答案:

答案 0 :(得分:4)

如果我理解正确的话,我认为这是现成的:

在视图控制器的导航项上设置backBarButtonItem。