Кнопка обновления по мере выполнения индикатора выполнения - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь обновить кнопку с надписью «Заказать безопасное сопровождение», чтобы изменить ее формулировку во время загрузки индикатора выполнения. Индикатор уже подключен к кнопке и работает нормально. Однако формулировка не обновляется.

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 голосов
/ 05 ноября 2018

Ваш if/else блок должен быть внутри updateProgress, а не внутри request.

Также обратите внимание, что даже при правильном расположении кода ваши сообщения, вероятно, не будут отображаться из-за математических проблем с плавающей запятой. Вы увеличиваете progressValue с небольшим десятичным значением, и оно никогда не может быть точно равно 2, 4, 6 или 8. Вы можете получить 1.999999, а затем 2.0011111 или что-то в этом духе.

Так что вы можете захотеть что-то вроде:

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

Обратите внимание, что вам не нужны скобки в Swift с if.

...