我已經創建了一個帶有5個標籤的標籤欄。我們想要創建一個功能,我們可以以編程方式啓用/禁用一些標籤欄的選項卡,以便用戶無法點擊它。Swift 3標籤欄禁用標籤
我們使用了默認的標籤欄控制器,我們使用的是swift 3.任何人都知道如何管理這些東西?
我已經嘗試了很多方法,但似乎它不可能限制用戶點擊選項卡。
如果有人遇到並解決了這個問題,請讓我知道。
我已經創建了一個帶有5個標籤的標籤欄。我們想要創建一個功能,我們可以以編程方式啓用/禁用一些標籤欄的選項卡,以便用戶無法點擊它。Swift 3標籤欄禁用標籤
我們使用了默認的標籤欄控制器,我們使用的是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變量
我已經嘗試過但不工作..! – iDev
是的。 @ AmK-IOSDev試試這個解決方案。它的工作.... –
試試這個 讓tabBar3:UITabBarItem = UITabBarItem(標題:「標題」,圖像:零,標記:2) tabBar3.isEnabled = false –
只需創建一個customTabBarController類,並把婁代碼上viewDidLoad中() 。
if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,let tabBarItem = arrayOfTabBarItems[3] as? UITabBarItem {
tabBarItem.isEnabled = false
}
因此您可以根據您的需求更改arrayOfTabBarItems索引。
斯威夫特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沒有被點擊。
在viewWillAppear()
方法試試這個:
if let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
tabBarItem.enabled = false
}
注意:將上面的代碼從點擊禁用第三個選項卡,禁用任何其他只是改變指數在arrayOfTabBarItems
你有沒有嘗試tabbarItem上的isEnabled屬性? –
tabBarItem.isEnabled = false會起作用! – luckyShubhra
@SivajeeBattina是的,我已經嘗試過,但沒有工作。 – iDev