随着进度栏的进展更新按钮

时间:2018-11-05 00:57:48

标签: ios swift timer uiprogressview

我正在尝试更新标记为“订单安全护航”的按钮,以在进度栏加载时更改其措辞。进度条已经连接到该按钮,并且可以正常工作。但是,措词不会更新。

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
    }
}

1 个答案:

答案 0 :(得分:0)

您的if/else块必须位于updateProgress内,而不是request内。

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

所以您可能想要类似的东西:

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

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