web-dev-qa-db-ja.com

タブバーアイテムを無効にする-Swift

特定のタブバーアイテムを無効にするにはどうすればよいですか? 3番目のアイコンのようなもの...

self.tabBarItem.items![2].enabled = false

ワンライナーのような単純なタスクを実行する方法が必要ですか?上記は機能しません...

8
Edward Hasted

これが答えです

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

Swift 3:を使用して同じことを行うための私のコードは次のとおりです

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

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

        tabBarItem1.isEnabled = false
        tabBarItem2.isEnabled = false    
    }
_

上記のコードブロックを初心者向けのviewDidLoad()メソッドに入れるだけで、tabBarItem変数を作成することを忘れないでください。そうすれば、そこから始めてもかまいません。

8
Johan Tingbacke

単一のビューでtabBarItemを無効にするには(そしてビューが変更されたときに再度有効にするには):

クラス定義で、UITabBarItemsのプレースホルダークラス変数を作成します。

var tabBarItemONE: UITabBarItem = UITabBarItem()
var tabBarItemTWO: UITabBarItem = UITabBarItem()
etc...

次に、viewWillAppearで、必要に応じてアイテムを無効にします。

let tabBarControllerItems = self.tabBarController?.tabBar.items

if let arrayOfTabBarItems = tabBarControllerItems as! AnyObject as? NSArray{

    tabBarItemONE = arrayOfTabBarItems[0] as! UITabBarItem
    tabBarItemONE.enabled = false

    tabBarItemTWO = arrayOfTabBarItems[1] as! UITabBarItem
    tabBarItemTWO.enabled = false

}

viewWillDisappearで、アイテムを再度有効にします。

override func viewWillDisappear(animated: Bool) {

    tabBarItemONE.enabled = true
    tabBarItemTWO.enabled = true

}
4
AT3D

誰かが方法を探している場合すべてのタブバーアイテムを無効にする

if let items = tabBarController?.tabBar.items {
        items.forEach { $0.isEnabled = false }
}
3
Tung Fam

Swift 4.2

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

これがワンライナーです:

Objective Cでは、そのコード行は_viewDidLoad:_で機能します。

Swiftでは、viewDidLoad()では機能しませんが、viewWillAppear()では機能します。

2
Dmitry Isaev

「AdityaKoukuntla」の回答のベースとして、この拡張機能を作成しました。

 extension UIViewController {

    func enableTabbarItems(_ items: [Int]) {
        disableAllTabbarItems()
        if let arrayOfTabBarItems = tabBarController?.tabBar.items as NSArray? {
            for i in 0..<arrayOfTabBarItems.count {
                if items.contains(i) {
                    if let tabBarItem = arrayOfTabBarItems[i] as? UITabBarItem {
                        tabBarItem.isEnabled = true
                    }
                }
            }
        }
    }

    private func disableAllTabbarItems() {
        if let arrayOfTabBarItems = tabBarController?.tabBar.items as NSArray? {
            for i in 0..<arrayOfTabBarItems.count {
                if let tabBarItem = arrayOfTabBarItems[i] as? UITabBarItem {
                    tabBarItem.isEnabled = false
                }
            }
        }
    }
}
2
Alfi