2016-04-22 18 views
3

Ich habe ein Storyboard mit einem TabBarController und sechs Unteransichten als Tabs. Der TabBarController und jeder Registerkarte ist eine Controller-Klasse zugewiesen. Der Inhalt einiger Tabs wird von einem Server geladen. In einigen Fällen gibt es keinen Inhalt für eine Registerkarte und in diesem Fall möchte ich das TabBarItem ausblenden.So verstecken Sie ein TabBarItem in Xamarin iOS

Ich habe versucht (nur zum Testen)

this.TabBarController.TabBar.Items [0].Enabled = false; 

aber es funktioniert nicht.

Wie kann ich ein einzelnes TabBarItems ausblenden? Ich habe Google, StackOverflow und das Xamarin Forum durchsucht, aber keine Lösung für mein Problem gefunden. Die einzige Lösung, die ich gefunden habe, war, die Unteransicht aus dem subviews-array zu entfernen, aber in diesem Fall kann ich die Registerkarte nicht einfach "reaktivieren", wenn ich die Registerkarte erneut anzeigen möchte.

Antwort

1

Bei UITabBar:

UITabBar sampleTabBar; 

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

      sampleTabBar = new UITabBar(); 
      sampleTabBar.Frame = new CoreGraphics.CGRect (10f, 64f, this.View.Frame.Width - 10, 50f); 

      var tabBarItem = new UITabBarItem ("TAB BAR ITEM", null, 4); 
      sampleTabBar.Items = new UITabBarItem[]{ tabBarItem }; 
      sampleTabBar.ItemSelected += (sender, e) => { 
       Console.WriteLine ("tab bar button item slected"); 

      //Disable Tab Bar item here 
       tabBarItem.Enabled = false; 
       tabBarItem.Title = "Disabled now"; 
      }; 

      this.View.AddSubview (sampleTabBar); 
     } 

tabBarItem.Image Eigenschaft kann auch für das Erhalten des Ergebnisses verwendet werden.

1) Set a placeholder image as default. 
2) Populate images from array/source to uibarButtonItem. 
3) Use placeholder image wherever need to hide uibarbuttonitem. 
+0

Thx für die Antwort. Aber so ist das TabBarItem immer noch sichtbar und nur deaktiviert. Ich möchte das TabBarItem vollständig ausblenden. – Cromax

1

Ich denke, wenn Sie völlig ausblenden möchten die UITabbarItem Sie die UIViewController vom UITabbarController wie so entfernen müssen:

var tbViewControllers = new List<UIViewController> (TabBarController.ViewControllers); 
    tbViewControllers.RemoveAt (2); // remove whatever index you need. 
    TabBarController.ViewControllers = tbViewControllers.ToArray(); 

aber Sie werden einen Verweis auf die ganze UIViewControllers Sie halten müssen will und füge es zurück wie folgt ein:

var tbViewControllers = new List<UIViewController> (TabBarController.ViewControllers); 
    tbViewControllers.Insert (2, new RemvoedViewController()); 
    TabBarController.ViewControllers = tbViewControllers.ToArray(); 
Verwandte Themen