2017-07-18 1 views
1

J'ai 5 UIViewcontroller dans mon UITabbarController mais j'ai besoin de l'affichage 4 d'entre eux dans la barre d'onglets donc j'essaye de supprimer le dernier élément de la barre d'onglets de UITabbarController.Comment supprimer Item Tabbar dans swift 3

self.tabBarController?.tabBar.items?.removeLast() 

Mais j'obtiens cette erreur.

modifier directement une barre d'onglets géré par un contrôleur de barre d'onglets ne sont pas autorisés

Alors, comment puis-je supprimer dernier élément TabBar de TabBar?

+0

Après avoir lu vos commentaires croire réponse, je SILL ne comprends pas ce que vous voulez. –

Répondre

0

Vous devez manipuler la matrice de viewcontrollers dans le contrôleur de la barre d'onglets. Essayez ceci.

if let tabBarController = self.tabBarController { 
    let indexToRemove = 4 
    if indexToRemove < tabBarController.viewControllers?.count { 
     var viewControllers = tabBarController.viewControllers 
     viewControllers?.remove(at: indexToRemove) 
     tabBarController.viewControllers = viewControllers 
    } 
} 
+1

Au lieu de copier, coller [cette réponse] (https://stackoverflow.com/a/28384731/5501940), vous devriez le commenter ... –

+0

J'ai essayé de le faire, mais je n'ai pas assez de rep pour ça. –

1

Pour enlever un ViewController de tabBarController? il vous suffit de mettre en œuvre:

tabBarController?.viewControllers?.removeLast() 

En supposant que vous retirez le dernier contrôleur (onglet).

Il est lié à viewControllers:

Un tableau des contrôleurs de vue racine affichée par la barre d'onglets de l'interface .

De toute évidence, vous pouvez supprimer et contrôleur, par exemple, pour enlever le premier contrôleur:

tabBarController?.viewControllers?.remove(at: 0) 

Mise à jour:

D'abord, je dois la viewcontroller Cinquième ouverte et je ne vais pas le montrer dans tabbar. L'utilisateur ne peut pas aller cinquième tabbar. Seulement je peux naviguer l'utilisateur. Alors cause de cela j'essaye de faire cela.

Pour y parvenir, tout ce que vous devez faire est de laisser votre story-board à structurer comme:

enter image description here

Considérant que le premier contrôleur de vue (celui qui doit présenter le contrôleur TabBar) est le contrôleur de vue que vous ne voulez pas laisser apparaître dans la barre d'onglets.

+0

J'ai juste besoin de supprimer le dernier élément non viewcontroller de tabbar –

+0

S'il vous plaît élaborer, si le dernier élément de la barre d'onglets a été retiré, alors comment vous pouvez naviguer vers son contrôleur de vue? Par défaut, la suppression d'un contrôleur de vue du tableau 'viewControllers' devrait automatiquement supprimer son élément dans la barre d'onglets. –

+0

Je ne reviendrai plus sur ce viewcontroller. Donc, j'ai juste besoin de supprimer le dernier élément de tabbar pas viewcontroller –

0

Pour supprimer un élément de barre d'onglets dont vous connaissez la référence ou l'emplacement, vous pouvez le faire de cette façon:

tabBarController?.viewControllers?.remove(at: 4) 
+0

Notez qu'il est un peu dangereux de l'implémenter sans vérification, si le 'tabBarController? .viewControllers?' Contient moins de 5 contrôleurs de vue, l'application va planter. –

+0

Comme je l'ai dit, si vous connaissez la référence à ce contrôleur particulier que vous supprimez, vous pouvez l'utiliser. –