Swift HUD с синхронной загрузкой API - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь добавить эффект HUD на мою страницу, пока я делаю синхронную загрузку.

HUD не появляется, если я помещаю в viewDidLoad ().

Если я включу awakeFromNib (), экран потемнеет, но индикатор выполнения не появится. (Я также пробовал ViewWillAppear)

Я использую https://github.com/rjeprasad/RappleProgressHUD.

Это не влияет на загрузку данных. Он работает только на мгновение после загрузки данных.

override func viewDidLoad() {
    super.viewDidLoad()

    RappleActivityIndicatorView.startAnimating()

   // the API function
    let a_Json = getDataJson(symbol: a)
    let b_Json = getdDataJson(symbol: b)

    RappleActivityIndicatorView.stopAnimating()

}

Использование Swift 4.2 и Alamofire_Synchronous для API.

Спасибо.

1 Ответ

0 голосов
/ 17 января 2019

Вам необходимо выполнить загрузку данных в фоновом режиме, чтобы пользовательский интерфейс мог продолжать работать.

Вот общий шаблон, который вы хотите:

// start the activity indicator here

DispatchQueue.global(qos: .background).async {
    // Data loading / processing here

    DispatchQueue.main.async {
        // stop the activity indicator here and make any other UI updates
    }
}

В вашем конкретном случае:

override func viewDidLoad() {
    super.viewDidLoad()

    RappleActivityIndicatorView.startAnimating()

    DispatchQueue.global(qos: .background).async {
        // the API function
        let a_Json = getDataJson(symbol: a)
        let b_Json = getdDataJson(symbol: b)

        DispatchQueue.main.async {
            RappleActivityIndicatorView.stopAnimating()
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...