【发布时间】:2017-11-09 13:26:05
【问题描述】:
我有一个带有自己的 UITabBarController 的 UITabBar,在这个控制器中我正在对 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()
}
}
【问题讨论】:
-
您可能希望使用协议/委托模式。这将允许您的
trigger button“回调”到您的自定义UITabBarController,您可以在其中处理禁用/启用选项卡(或您想做的任何其他事情)。 -
这听起来像是可以工作的。你有什么例子我可以做到这一点吗?我实际上以不同的方式尝试了它,一旦按下按钮并在执行检查时将一些值保存到 UserDefaults 中,但在 UITabBarController 中,但这仅在加载 tabBar 后才有效。我希望它可以在我想要的任何时候工作 - 因此,一旦单击按钮以执行检查,就调用栏的“重新加载”...
标签: ios swift uitabbarcontroller uitabbar