2017-07-26 1 views
0

J'ai créé une barre d'onglets avec 5 onglets. nous voulons créer une fonctionnalité que nous pouvons activer/désactiver certains onglets de la barre d'onglets par programme afin que l'utilisateur ne puisse pas cliquer dessus.Onglet de désactivation de la barre d'onglets Swift 3

Nous avons utilisé le contrôleur de barre d'onglets par défaut et nous utilisons swift 3. Quelqu'un a-t-il une idée de la façon de gérer ce genre de choses?

J'ai essayé de nombreuses façons mais il semble qu'il n'est pas possible de restreindre l'utilisateur à cliquer sur l'onglet.

S'il vous plaît laissez-moi savoir si quelqu'un a fait face et résolu ce problème.

+0

Avez-vous Essayez la propriété isEnabled sur tabbarItem? –

+0

tabBarItem.isEnabled = false fonctionnerait !! – luckyShubhra

+0

@SivajeeBattina oui j'ai essayé mais ne fonctionne pas. – iDev

Répondre

2
let tabBarControllerItems = self.tabBarController?.tabBar.items 

if let tabArray = tabBarControllerItems { 
    tabBarItem1 = tabArray[0] 
    tabBarItem2 = tabArray[1] 

    tabBarItem1.isEnabled = false 
    tabBarItem2.isEnabled = false  
} 

Il suffit de mettre le bloc de code ci-dessus dans la méthode viewDidLoad() pour commencer et ne pas oublier de créer les variables tabBarItem

+0

J'ai essayé mais je ne travaille pas .. !! – iDev

+0

Oui. @ AmK-IOSDev essaie cette solution. son fonctionnement .... –

+0

essayer ce let tabBar3: UITabBarItem = UITabBarItem (titre: "Titre", image: nil, tag: 2) tabBar3.isEnabled = false –

0

Il suffit de créer une classe customTabBarController et mettre le code ci-dessous sur viewDidLoad() . Ainsi, vous pouvez modifier l'index de arrayOfTabBarItems en fonction de votre requirment.

1

Swift 3 Xcode 8.3.3

Je fais une démonstration application pour votre problème. C'est le code de firstViewController dans TabBar ViewController.

class firstViewController: UIViewController ,UITabBarControllerDelegate { 

override func viewDidLoad() { 
super.viewDidLoad() 

self.tabBarController?.delegate = self 
} 


func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 
    if viewController.isKind(of: secondViewController.self as AnyClass) { 
     return true 
    } 
    if viewController.isKind(of: thirdViewController.self as AnyClass) { 
     return false 
    } 
    } 
} 

Dans cette démonstration, SecondViewController est Cliquer et ouvrir ViewController. Mais thirdViewController n'est pas cliqué.

1

Essayez ceci dans votre méthode viewWillAppear():

if let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem { 
     tabBarItem.enabled = false 
    } 

Remarque: Le code ci-dessus désactivera votre troisième onglet de cliquer, pour désactiver tout autre, il suffit de changer l'index dans le arrayOfTabBarItems