Ios 如何禁用选项卡栏项目的选择-swift
我有一个应用程序,其中有两个UIViewcontroller嵌入在UIAbbarController中。当我在UIViewController-1中时,我想按下一个按钮来禁用选项卡栏的所有项目选择。我的努力如下,但我不知道如何完成代码 当我在“文件夹”UIViewController中时,我想禁用任何选项卡栏项目的选择:Ios 如何禁用选项卡栏项目的选择-swift,ios,swift,uitabbarcontroller,Ios,Swift,Uitabbarcontroller,我有一个应用程序,其中有两个UIViewcontroller嵌入在UIAbbarController中。当我在UIViewController-1中时,我想按下一个按钮来禁用选项卡栏的所有项目选择。我的努力如下,但我不知道如何完成代码 当我在“文件夹”UIViewController中时,我想禁用任何选项卡栏项目的选择: class Folders: UIViewController, UITableViewDataSource, UITableViewDelegate{ ... //
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
}
...
}
tabBarItemsArray
是可选的,它的类型是[UITabBarItem]?
您可以首先强制展开它:tabBarItemsArray![0]
,但正确的方法是使用,如果让构造:
if let tabBarItemsArray = tabBarController.tabBar.items {
tabBarItemsArray[0].isEnabled = false
}
或:
tabBarItemsArray
是可选的,它的类型是[UITabBarItem]?
您可以首先强制展开它:tabBarItemsArray![0]
,但正确的方法是使用,如果让构造:
if let tabBarItemsArray = tabBarController.tabBar.items {
tabBarItemsArray[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观察者来实现。请检查以下代码*在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
}
从以下任何地方开火…
如果要一次禁用一个选项卡项,则此选项用于禁用第一个选项卡项:
guard let tabbars = self.tabBar.items else {
return
}
tabbars[0].isEnabled = false
但如果您希望同时禁用所有这些功能,则这是要实现的功能:
self.tabBar.items?.map{$0.isEnabled = false}
如果要一次禁用一个选项卡项,则此选项用于禁用第一个选项卡项:
guard let tabbars = self.tabBar.items else {
return
}
tabbars[0].isEnabled = false
但如果您希望同时禁用所有这些功能,则这是要实现的功能:
self.tabBar.items?.map{$0.isEnabled = false}
有一个UITableControllerDelegate方法用于此。tabBarController(u3;:shouldSelect:)。有一个UITableControllerDelegate方法用于此。tabBarController(u3;:shouldSelect:)。