Индикатор активности игнорирует функцию задержки - PullRequest
0 голосов
/ 22 марта 2020

Это функция для отображения activity indicator

func showActivityIndicator() {
     let container: UIView = UIView()
     container.frame = CGRect(x: 0, y: 0, width: 80, height: 80)
     container.backgroundColor = .clear
     activityView.center = self.view.center
     container.addSubview(activityView)
     self.view.addSubview(container)
     activityView.startAnimating()
}

И это delay функция, параметр должен быть числом секунд:

func delay(_ delay: TimeInterval, callback: @escaping ()->()) {
    let delay = delay * Double(NSEC_PER_SEC)
    let popTime = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC);
    DispatchQueue.main.asyncAfter(deadline: popTime, execute: {
        callback()
    })
}

Это место вызов этих двух функций:

showActivityIndicator()
delay(3) {
    self.activityView.stopAnimating()
}
let alert = UIAlertController(title: "Success", message: "Thanks", preferredStyle: .alert)
let action = UIAlertAction(title: "OK", style: .default, handler: {(alert: UIAlertAction!) in self.displayHomeVC()})
alert.addAction(action)

Так что мой sh должен показать индикатор активности в течение 3 секунд, а затем показать предупреждение.
Проблема: Индикатор активности исчезает через мгновение и появляется предупреждение. Кто-нибудь знает почему?

1 Ответ

1 голос
/ 22 марта 2020

Во-первых, то, что @ Paulw11 и @matt сказали, правда, вы должны изучить это.

После того, как вы исправите это, вы столкнетесь с другой проблемой, предупреждение не будет частью вашего обратного вызова. Вы должны поместить предупреждение в функцию обратного вызова fun c следующим образом:

delay(3) {
    self.activityView.stopAnimating()
    let alert = UIAlertController(title: "Success", message: "Thanks", preferredStyle: .alert)
    let action = UIAlertAction(title: "OK", style: .default, handler: {(alert: UIAlertAction!) in self.displayHomeVC()})
    alert.addAction(action)
}
...