2016-06-07 6 views
1

Ich habe eine benutzerdefinierte Ansicht auf dem Storyboard, das als Symbolleiste fungiert. Diese Ansicht enthält drei Schaltflächen und ich definiere benutzerdefinierte Ansichten für jede Schaltfläche in ViewDidLoad.ios Ansicht verschwindet nach der Navigation zu anderen Bildschirmen

Wenn ich zu einer anderen Ansicht navigiere, gehe ich zurück zu diesem Originalbildschirm, sowohl der Text als auch die Bilder auf diesen Schaltflächen fehlen. Es gibt nur einen leeren schwarzen Balken. Dies passiert bei einigen Geräten, aber die Ansichten werden gut angezeigt und verschwinden nie auf anderen Geräten.

Was ich habe versucht:

  • ich ausdrücklich die verborgene Eigenschaft dieser Schaltflächen auf false im ViewWillAppear

    btn1.Hidden = false gesetzt haben; btn2.Hidden = false; btn3.Hidden = false;

  • Ich habe auch versucht, die Schaltflächen in der ViewWillAppear statt der ViewDidLoad zu definieren, um zu sehen, ob das das Problem löst. Sie verschwinden immer noch.

Unten ist mein Code:

public override void ViewWillAppear(bool value) 
    { 
     try 
     { 
      base.ViewWillAppear(value); 


      //icon setup 

      //the space between the image and modelFilterText 
      var spacing = 0.3f; 

      var icon1 = UIImage.FromBundle("Icons/Home/icon1.png"); 


      btn1.SetImage(icon1, UIControlState.Normal); 
      btn1.SetTitle("ONE", UIControlState.Normal); 
      btn1.SetTitleColor(UIColor.LightGray, UIControlState.Normal); 
      btn1.Font = UIFont.FromName("BankGothicBT-Light", 12f); 
      btnRequest.TouchUpInside += (object sender, EventArgs e) => 
      { 
       NavigationItem.BackBarButtonItem = new UIBarButtonItem("", UIBarButtonItemStyle.Plain, null); 

       NavigationController.PushViewController(view1, true); 
      }; 

      // lower the modelFilterText and push it left so it appears centered 
      // below the image 

      var imageSize = btn1.ImageView.Image.Size; 
      btn1.TitleEdgeInsets = new UIEdgeInsets(0.0f, -imageSize.Width, -(imageSize.Height + spacing), 
       0.0f); 

      // raise the image and push it right so it appears centered 
      // above the modelFilterText 

      var titleSize = btn1.TitleLabel.Text.StringSize(btn1.TitleLabel.Font); 
      btn1.ImageEdgeInsets = new UIEdgeInsets(-(titleSize.Height + spacing), 0.0f, 0.0f, 
       -titleSize.Width); 

      //Second Icon 
      var icon2 = UIImage.FromBundle("Icons/Home/icon2.png"); 

      btn2.SetImage(icon2, UIControlState.Normal); 
      btn2.SetTitle("TWO", UIControlState.Normal); 
      btn2.SetTitleColor(UIColor.LightGray, UIControlState.Normal); 
      btn2.Font = UIFont.FromName("BankGothicBT-Light", 12f); 

      btn2.TouchUpInside += 
       (object sender, EventArgs e) => 
      { 
       NavigationItem.BackBarButtonItem = new UIBarButtonItem("", UIBarButtonItemStyle.Plain, null); 
      }; 

      // lower the modelFilterText and push it left so it appears centered 
      // below the image 

      var imgSize = btn2.ImageView.Image.Size; 
      btn2.TitleEdgeInsets = new UIEdgeInsets(0.0f, -imgSize.Width, -(imgSize.Height + spacing), 0.0f); 

      // raise the image and push it right so it appears centered 
      // above the modelFilterText 

      var titleLength = btn2.TitleLabel.Text.StringSize(btn2.TitleLabel.Font); 
      btn2.ImageEdgeInsets = new UIEdgeInsets(-(titleLength.Height + spacing), 0.0f, 0.0f, 
       -titleLength.Width); 


      //Third Icon 
      var icon3 = UIImage.FromBundle("Icons/Home/icon3.png"); 

      btn3.SetImage(icon3, UIControlState.Normal); 
      btn3.SetTitle("THREE", UIControlState.Normal); 
      btn3.SetTitleColor(UIColor.LightGray, UIControlState.Normal); 
      btn3.Font = UIFont.FromName("BankGothicBT-Light", 12f); 

      btn3.TouchUpInside += (object sender, EventArgs e) => 
      { 

       NavigationItem.BackBarButtonItem = new UIBarButtonItem("", UIBarButtonItemStyle.Plain, null); 

       NavigationController.PushViewController(view3, true); 
      }; 


      // lower the modelFilterText and push it left so it appears centered below the image 

      var imagSize3 = btn3.ImageView.Image.Size; 
      btn3.TitleEdgeInsets = new UIEdgeInsets(0.0f, -imagSize3.Width, -(imagSize3.Height + spacing), 
       0.0f); 

      // raise the image and push it right so it appears centered 
      // above the modelFilterText 

      var titleLength3 = btn3.TitleLabel.Text.StringSize(btn3.TitleLabel.Font); 
      btn3.ImageEdgeInsets = new UIEdgeInsets(-(titleLength3.Height + spacing), 0.0f, 0.0f, 
       -titleLength3.Width); 


     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("View will appear error " + ex.Message + ex.StackTrace); 
     } 

    } 

Die Tasten erscheinen und werden zum ersten Mal richtig gezeichnet. Nachdem ich jedoch von dieser Seite weg navigiert bin, sehe ich unten nur noch eine schwarze Ansicht. Keine Tasten

Antwort

1

Ich habe gelernt, dass die Tasten nicht wirklich verschwinden. Sie sind durch die iOS-Toolbar verdeckt.

Wenn ich zum Beispiel zu einem Bildschirm mit einer iOS-Symbolleiste navigiere und dann zurück zu dieser Homepage navigiere, wird die NavigationController.SetToolbarHidden-Eigenschaft für alle anderen Bildschirme auf true gesetzt.

Alles, was ich tun musste, war dies im ViewWillAppear dieser Homepage auf false zu setzen, damit meine benutzerdefinierte Ansicht nicht verdeckt wird.

NavigationController.SetToolbarHidden(true,false) 
Verwandte Themen