Как отключить выбор элементов панели вкладок - swift - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть приложение, в котором есть два UIViewcontroller, встроенных в UITabBarcontroller. Когда я нахожусь в UIViewController-1, я хотел бы нажать кнопку, которая отключает выбор всех элементов панели вкладок. Мои усилия ниже, но я не уверен, как завершить код ...

enter image description here

Когда я нахожусь в UIViewController 'Папки', я хотел бы отключить выбор любого элемента панели вкладок:

 class Folders: UIViewController, UITableViewDataSource, UITableViewDelegate{

 ...
 // DISABLE TAB BAR ITEMS
 func disable (){
    let tabBarItemsArray = self.tabBarController?.tabBar.items
    tabBarItemsArray[0].enabled = false // THIS BIT OF CODE IS NOT RECOGNIZED BY XCODE
  }
 ...
 }

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Вы можете сделать это, используя одну строку кода. Пожалуйста, проверьте следующий код.

Вы можете выполнить это с любого контроллера.

self.navigationController?.tabBarController?.tabBar.items![0].isEnabled = false

Другой способ

Вы можете определить наблюдателя NotificationCenter для достижения. Пожалуйста, проверьте следующий код. * В файле контроллера TabBar.

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    NotificationCenter.default.addObserver(self, selector: #selector(disableTab(notification:)), name: Notification.Name("disableTab"), object: nil)
}

@objc func disableTab(notification: Notification) {
    self.TabBarItem.isEnabled = false
}

Огонь из любого места, как следует ...

NotificationCenter.default.post(name: Notification.Name("disableTab"), object: nil)
0 голосов
/ 05 сентября 2018

, если вы хотите отключить один элемент панели вкладок сразу, тогда это для отключения первого:

guard let tabbars = self.tabBar.items else {
                  return
              }
              tabbars[0].isEnabled = false

но если вы хотите, чтобы все они были отключены одновременно, то это будет реализовано:

 self.tabBar.items?.map{$0.isEnabled = false}
0 голосов
/ 05 сентября 2018

tabBarItemsArray является необязательным, его тип [UITabBarItem]?.

Вы можете изначально принудительно развернуть его: tabBarItemsArray![0], но правильный способ - использовать if let construct:

if let tabBarItemsArray = tabBarController.tabBar.items {
    tabBarItemsArray[0].isEnabled = false
}

или

guard let tabBarItemsArray = tabBarController.tabBar.items else {
    fatalError("Error")
}
let item = tabBarItemsArray[0]
item.isEnabled = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...