【问题标题】:Updating Button as Progress Bar progresses随着进度条的进展更新按钮
【发布时间】:2018-11-05 00:57:47
【问题描述】:

我正在尝试更新标有“Order Safety Escort”的按钮,以在进度条加载时更改其措辞。进度条已经连接到按钮并且工作正常。但是,措辞没有更新。

class SEController: UIViewController {
    @IBOutlet weak var requestBtn: UIButton!
    @IBOutlet weak var progressBar: UIProgressView!

    var progressValue: Float = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        requestBtn.layer.cornerRadius = 5
        requestBtn.clipsToBounds = true
    }

    @IBAction func request(_ sender: Any) {
        Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(updateProgress), userInfo: nil, repeats: true)
        if (progressValue == 2) {
            requestBtn.setTitle("Ording Safety Escort", for:[])
        } else if (progressValue == 4) {
            requestBtn.setTitle("Sending Current Location", for:[])
        } else if (progressValue == 6) {
            requestBtn.setTitle("Current Location Recieved", for:[])
        } else if (progressValue == 8) {
            requestBtn.setTitle("Safety Escort In Route", for:[])
        }
    }

    @objc func updateProgress() {
        progressValue += 0.01/9
        progressBar.progress = progressValue
    }
}

【问题讨论】:

  • 顺便说一句,你的意思是"en route",而不是“在路上”
  • 您的意思是“收到”,而不是“收到”?

标签: ios swift timer uiprogressview


【解决方案1】:

您的if/else 块需要在updateProgress 内,而不是在request 内。

另外请注意,即使代码在正确的位置,由于浮点数学问题,您的消息也可能不会出现。您正在使用一个小的十进制值递增 progressValue,它可能永远不会完全等于 2、4、6 或 8。您可能会达到 1.999999,然后是 2.0011111 或类似的东西。

所以你可能想要这样的东西:

if progressValue - 2 < 0.0011 {
} else if ...

请注意,if 在 Swift 中不需要括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2013-03-08
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多