2017-07-26 107 views
0

我已經創建了一個帶有5個標籤的標籤欄。我們想要創建一個功能,我們可以以編程方式啓用/禁用一些標籤欄的選項卡,以便用戶無法點擊它。Swift 3標籤欄禁用標籤

我們使用了默認的標籤欄控制器,我們使用的是swift 3.任何人都知道如何管理這些東西?

我已經嘗試了很多方法,但似乎它不可能限制用戶點擊選項卡。

如果有人遇到並解決了這個問題,請讓我知道。

+0

你有沒有嘗試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中()方法上面,不要忘記創造tabBarItem變量

+0

我已經嘗試過但不工作..! – iDev

+0

是的。 @ AmK-IOSDev試試這個解決方案。它的工作.... –

+0

試試這個 讓tabBar3:UITabBarItem = UITabBarItem(標題:「標題」,圖像:零,標記:2) tabBar3.isEnabled = false –

0

只需創建一個customTabBarController類,並把婁代碼上viewDidLoad中() 。

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

在那個Demo SecondViewController是單擊並打開ViewController。但是thirdViewController沒有被點擊。

1

viewWillAppear()方法試試這個:

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

注意:將上面的代碼從點擊禁用第三個選項卡,禁用任何其他只是改變指數在arrayOfTabBarItems