所有导航控制器上的TitleView和RightBarButtonItem

时间:2011-10-31 10:27:31

标签: ios xamarin.ios monotouch.dialog

我正在开发一个基于导航的应用程序,我在我的应用程序的所有导航项目中都有一个自定义titleView和一个rightBarButtonItem用于导航栏(如可以从所有视图访问的徽标和菜单按钮)。< / p>

有没有什么好的做法来实现它,而不是每次推送一个新的viewController时手动设置titleView和rightBarButtonItem?我正在使用monotouch.dialog但欢迎任何提示,因为这似乎更像是关于sdk的问题。

此致

2 个答案:

答案 0 :(得分:4)

听起来遗传对你来说是一个解决方案。

你应该考虑做一个UIViewController母类来处理设置titleView和RightBarButton项目,然后你应用程序中的所有UIViewController都将从该类继承。

答案 1 :(得分:2)

您可能想首先问自己,您是否真的需要与UINavigationController直接相关的UINavigationBar,或者您是否想要一个包含您内容的静态UIToolbar。

或者,你可以做@MartinMoizard所指的是UIViewController的子类。我在下面提供了两个样本。干杯!

public class MyToolbar : UIToolbar
{
    public MyToolbar()
        : base()
    {
        var myTitle = MyCustomUIlabel();
        var myButton = MyCustomUIButton();

        this.SetItems(new UIBarButtonItem[] { 
        myTitle, 
        new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace),
        myButton });
    }
}


public class MyViewController : UIViewController
{
    public MyViewController()
        : base()
    {
    }

    public override void ViewDidLoad()
    {
        //
        // .. setup your code hurr' dawg
        //

        this.NavigationItem.RightBarButtonItem = myRightButton;
        this.NavigationItem.Title = "My Title";
    }
}