2017-07-26 24 views
0

5つのタブ付きのタブバーを作成しました。私たちはタブバーのいくつかのタブをプログラム上で有効/無効にすることができるように、ユーザーがそれをクリックできないような機能を作りたいと思っています。Swift 3タブバー無効化タブ

私たちはデフォルトのタブバーコントローラを使用しており、私たちはswift 3を使用しています。誰もこのようなものを管理する方法がありますか?

私は多くの方法を試みましたが、タブをクリックするようにユーザーを制限することはできないようです。

誰かがこの問題に直面して解決した場合はお知らせください。

+0

にインデックスを変更、他を無効にするには、クリックしてから、あなたの3番目のタブが無効になりますが、あなたをしましたtabbarItemでisEnabledプロパティを試してみますか? –

+0

tabBarItem.isEnabled = falseが機能します! – luckyShubhra

+0

@SivajeeBattinaはい、私は試しましたが、動作していません。 – iDev

答えて

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

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

    tabBarItem1.isEnabled = false 
    tabBarItem2.isEnabled = false  
} 

ただ、初心者のためのviewDidLoad()メソッドでは、上記のコードのブロックを置くと、ちょうどcustomTabBarControllerクラスを作成し、のviewDidLoad(上怒鳴るコードを入れtabBarItem変数に

+0

私は試しましたが、動作していません.. !! – iDev

+0

はい。 @ AmK-IOSDevはこの解決策を試してください。その作業.... –

+0

これを試す let tabBar3:UITabBarItem = UITabBarItem(タイトル: "タイトル"、イメージ:なし、タグ:2) tabBar3.isEnabled = false –

0

を作成することを忘れないでください) 。

if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,let tabBarItem = arrayOfTabBarItems[3] as? UITabBarItem { 
     tabBarItem.isEnabled = false 
    } 

したがって、必要条件に基づいてarrayOfTabBarItemsインデックスを変更することができます。

1

スウィフト3のXcode 8.3.3

私はあなたの問題のデモアプリケーションを作っています。これは、TabBar ViewControllerのfirstViewControllerのコードです。

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 
    } 
    } 
} 

デモではSecondViewControllerをクリックしてViewControllerを開きます。しかし、thirdViewControllerはクリックされません。

1

あなたviewWillAppear()方法でこれを試してみてください:

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

:上記のコードはちょうどarrayOfTabBarItems

関連する問題