2015-07-19 2 views
4

Как отключить конкретный элемент вкладки? Что-то вроде 3-го значка ...Отключить элемент вкладки - Swift

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

Должен быть способ выполнить такую ​​простую задачу, как один вкладыш? выше не работает ...

+0

Вы пробовали что-то вроде этого: 'self.tabBarItem.items! [2] .setEnabled (true, forSegmentAtIndex: 2);'? – BHendricks

ответ

7

Вот ответ

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

Пришлось немного подстроить его для Swift 3: if let arrayOfTabBarItems = tabBarController? .tabBar.items как AnyObject как? NSArray, let tabBarItem = arrayOfTabBarItems [2] as? UITabBarItem { tabBarItem.isEnabled = true } – jammyman34

2

Чтобы отключить 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 

} 
6

Вот мой код делает то же самое, используя 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, и вам все хорошо оттуда!

0

Вот один вкладыш:

В Objective C, что строка кода работает в viewDidLoad:.

В Swift он не работает в viewDidLoad(), но работает в viewWillAppear().

Смежные вопросы