我有一个UITabBar,它有自己的UITabBarController,在这个控制器中我正在对tabBar进行一些调整,例如禁用/启用tabBar项目。我是在viewDidLoad中做的。
然而,这些调整的触发器将位于其中一个相关选项卡上,并且是视图控制器。触发器将是一个按钮,一旦按下按钮,tabBar上的一个项目应从“禁用”变为“启用”。
我是否需要使用tabBar重载功能,或者我需要以某种方式重新加载UITabBarController来实现这一点?
谢谢 - 感谢您提供的任何帮助!
编辑:UITabBarController和UIViewController的我的VC位于下方。
的UITabBarController
class TabBarVC: UITabBarController, TopRatedVCDelegate {
var tabBarItem1 = UITabBarItem()
var tabBarItem2 = UITabBarItem()
var tabBarItem3 = UITabBarItem()
var tabBarItem4 = UITabBarItem()
override func viewDidLoad() {
super.viewDidLoad()
}
func setbar() {
let tabBarControllerItems = tabBar.items
if let tabArray = tabBarControllerItems {
tabBarItem1 = tabArray[0]
tabBarItem2 = tabArray[1]
tabBarItem3 = tabArray[2]
tabBarItem4 = tabArray[3]
}
tabBarItem1.isEnabled = true
tabBarItem1.badgeValue = "99"
tabBarItem2.isEnabled = false
tabBarItem3.isEnabled = true
tabBarItem4.isEnabled = true
}
}
带按钮的UIViewController
protocol TopRatedVCDelegate: class {
func setbar()
}
class TopRatedVC: UIViewController {
@IBOutlet weak var userDefValueLbl: UILabel!
weak var delegate: TopRatedVCDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPressed(_ sender: Any) {
delegate?.setbar()
}
}
答案 0 :(得分:0)
让我向你解释代表团模式。它是控制器和视图等组件之间通信的有效方式。 您需要遵循以下6个步骤:
updateTabItems
的函数来启用或禁用标签栏项目。weak var delegate: ProtocolType?
delegate?.updateTabItems()
class Controller : YourProtocol
self
updateTabItems
以下是委托模式的完整说明。 IOS开发人员在日常工作中非常重要且非常有用:Delegation pattern