【问题标题】:Handling tint color changes of UIBarButtonItems in Navigation Controller处理导航控制器中 UIBarButtonItems 的色调颜色变化
【发布时间】:2016-08-18 20:01:27
【问题描述】:

我正在尝试更改 UIBarButtonItem 的色调颜色。当用户进行选择时,我更改了 tintColor 属性并且它工作得很好,但只有当用户在当前屏幕上时。一旦用户将新的视图控制器推送到堆栈上,更改就不会持续存在。当他们回到屏幕上时,更改后的 tintColor 又回到了原来的状态。我尝试在 viewWillAppear 和 viewDidAppear 中重置属性。依然没有。如果有人可以向我解释发生了什么,将不胜感激!谢谢。

@IBOutlet var dataRunNameBtn: UIBarButtonItem!

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    updateUI()
}

private func updateUI() {
    equationType.text = EquationCalculator.sI.equationType
    formulaForEquation.text = EquationTableDataSource.sI.formulaText!
    self.dataRunNameBtn.title = ClipBoardModel.sI.currentDataRun.name

    // Clipboard
    if ClipBoardModel.sI.currentDataRunComputed {
        self.dataRunNameBtn.tintColor = UIColor.greenColor()
    } else {
        self.dataRunNameBtn.tintColor = UIColor.flatSandColor()
    }
}

【问题讨论】:

  • 介意给我们一些代码吗?可以使用与 tintColor 进行设置/交互的​​相关位置。
  • 用代码更新了问题。你能解释一下什么是“相关的地方”吗?谢谢。
  • 您正在设置或调用 tintColor 的任何位置。
  • 您的模型是如何设置的?我很好奇每次调用模型时该值是否保持不变。
  • 如果在 self.dataRunNameBtn.title 设置后设置断点,值是你期望的吗?

标签: ios swift


【解决方案1】:

打电话

navigationController?.navigationBar.tintColorDidChange()

在我通过按钮色调更新后为我解决了这个问题!

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 2016-06-06
    • 2017-06-20
    • 1970-01-01
    • 2011-12-26
    • 2018-07-27
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多