Цвет оттенка NavigationBar не изменяется, когда я нажимаю BackButton Xamarin.iOS

У меня два ViewControllers в моем приложении. Я использую Xamarin.iOS. Я хочу перейти от VC1 в VC2 и изменить цвет фона NavigationBar (BarTintColor) поэтому разные ВК должны иметь разные NavigationBarColors,

Код в VC1:

public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();

            //change the navigation bar controller
            this.NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB (26f / 255f, 56f / 255f, 100f / 255f);
            this.NavigationController.NavigationBar.TitleTextAttributes = new UIStringAttributes()
            {
                ForegroundColor = UIColor.White
            };
            NavigationController.NavigationBar.BarStyle = UIBarStyle.Black;
        }

        public override void ViewDidAppear (bool animated)
        {
            base.ViewDidAppear (animated);

            this.NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB (26f / 255f, 56f / 255f, 100f / 255f);
        }

Код в VC2:

public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            // Perform any additional setup after loading the view, typically from a nib.

            // change the back button
            UIBarButtonItem newBackButton = new UIBarButtonItem("Prapa",UIBarButtonItemStyle.Plain, (sender,args) => NavigationController.PopViewController (true));
            newBackButton.TintColor = UIColor.White;
            NavigationItem.SetLeftBarButtonItem (newBackButton, false);

            //change the title of the screen
            NavigationItem.Title = "Horoskopi Ditor";

            NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB(47f/255f,189f/255f, 184f/255f);
        }

Теперь проблема в том, что я могу изменить цвет при переходе от VC1 к VC2, но когда я возвращаюсь к VC1, цвет не меняется.

Я думаю, что мне нужно переопределить какой-то метод, чем, когда появляется экран, чтобы изменить цвет фона. В VC1 я переопределил ViewDidAppear но это не дало мне никакого результата. Любая идея?

1 ответ

Решение

Эй ты пробовал ViewWillAppear:

VC1:

public override void ViewWillAppear (bool animated)
{
    base.ViewWillAppear (animated);
    if (NavigationController != null)
    {
        NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB (26f / 255f, 56f / 255f, 100f / 255f);
    }
}

С ViewDidAppear вид уже на экране и ViewWillAppear его нет на экране, так что вы можете изменить Navbar.

Другие вопросы по тегам