Изменение TabBarController & NavigationController при использовании MonoTouch.Dialog - PullRequest
2 голосов
/ 25 февраля 2012

Я пытаюсь изменить цвет контроллера панели навигации, а также контроллера панели вкладок

Я использую monotouch.dialog для создания приложения и имею следующий код

    public partial class AppDelegate : UIApplicationDelegate
{
    // class-level declarations
    UIWindow window;

    //
    // This method is invoked when the application has loaded and is ready to run. In this 
    // method you should instantiate the window, load the UI into it and then make the window
    // visible.
    //
    // You have 17 seconds to return from this method, or iOS will terminate your application.
    //
    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        // create a new window instance based on the screen size
        window = new UIWindow (UIScreen.MainScreen.Bounds);

        // If you have defined a view, add it here:
        // window.AddSubview (navigationController.View);
        CreateTabs();
        // make the window visible
        window.MakeKeyAndVisible ();

        return true;
    }

    protected void CreateTabs()
    {
        window = new UIWindow (UIScreen.MainScreen.Bounds);

    var nav = new UITabBarController ();
    nav.ViewControllers = new UIViewController [] {
        new HomeController("Home"),
        new WhereToUseController(),
        new TransactionsController(),
        new SettingsController()
    };

    //  nav.TabBarController.TabBar.BackgroundColor = UIColor.Green;
    nav.CustomizableViewControllers = new UIViewController [0];
    window.RootViewController = nav;
// window.BackgroundColor =  UIColor.Orange;        
        window.MakeKeyAndVisible ();

    }

Пример одного из моих контроллеров

    public override void LoadView ()
    {
        base.LoadView ();
    //TableView.BackgroundColor = UIColor.Clear;
  //  ParentViewController.View.BackgroundColor = UIColor.Red;
    }

    public HomeController (string s)
    {

         TabBarItem = new UITabBarItem (s, null, 1);

        var root = new RootElement (s) {


            new Section () {
                new UIViewElement("My Caption:", view, false),
                new StyledStringElement("Hello","somevalue"),
                new StringElement ("Welcome back Shane"),
                    new ImageElement(new UIImage("Images/QR.png")),
            }
        };

        PushViewController (new DialogViewController (root), false);
    }

Где я должен был изменить цвет?разрешить мне менять верх и низ?

1 Ответ

2 голосов
/ 25 февраля 2012

Если вы нацелены на iOS 5 (и более поздние версии), тогда вам стоит взглянуть на новую функцию UIAppearance.Это позволит вам настроить внешний вид всех типов управления для вашего приложения (один раз, а не для каждого, который вы создаете).

Например, вызов этого

 UINavigationBar.Appearance.TintColor = UIColor.Black;
 UITabBar.Appearance.TintColor = UIColor.Green;

из вашего FinishedLaunchingсделает все панели навигации с черным фоном, даже те из MonoTouch.Dialog (вместо синего по умолчанию) и панель вкладок с зеленым фоном (вместо черного).

note 1: *За 1011 * до iOS5 вам нужно установить свойства *Color для каждого элемента управления (что не так весело, поскольку у вас не всегда есть к ним доступ).

note 2: вы создаете новый экземпляр UIWindow два раза, т.е. в FinishedLaunching и CreateTabs

  window = new UIWindow (UIScreen.MainScreen.Bounds);
вызывается следующее
...