MBProgressHUD должен быть доступен в главном потоке - PullRequest
0 голосов
/ 09 октября 2018

Я получаю эту ошибку при использовании MBProgessHUD.Я пытался показать индикатор загрузки, затем мое приложение загружает данные из API-интерфейса и затем останавливается, когда данные отображаются на экране.

func getJson(){ 
        let spinningWheel = MBProgressHUD.showAdded(to: self.view, animated: true)
        spinningWheel.label.text = "Loading"
        spinningWheel.detailsLabel.text = "Please wait a moment.."
.
. 
.
.
.
.
. 
DispatchQueue.main.async {
                    self.movieName.isHidden = false
                    self.movieName.text = self.movieNameLabel
                    self.movieDescription.text = self.movieDescriptionLabel
                    self.movieImage.downloadedFrom(url: url2!)
                    spinningWheel.hide(animated: true)
                }

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Единственное подозрение, что вы представляете / нажимаете / переходите к этому виртуальному каналу из фонового потока, так что этот

let spinningWheel = MBProgressHUD.showAdded(to: self.view, animated: true)

будет выполняться внутри него, поэтому убедитесь, что навигация выполняется в основном потоке, поэтомужизненный цикл vc будет в правильном месте

0 голосов
/ 09 октября 2018

В iOS все вызовы методов UIKit должны выполняться в главном потоке.Включите все ваши UIkit использования в DispatchQueue.main.(a)sync звонки, например:

func getJson() {
  DispatchQueue.main.async {
    let spinningWheel = MBProgressHUD.showAdded(to: self.view, animated: true)
    spinningWheel.label.text = "Loading"
    spinningWheel.detailsLabel.text = "Please wait a moment.."
  }
  // actually get JSON
}
...