2

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

Код в 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, но это не дало мне результата. Есть идеи?

ответ

2

Эй вы пытались 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.

+0

спасибо, что это сработало :) – Xhulio

+0

Не беспокойтесь, рад помочь! –