SVProgressHUD не отображается после отображения другого сообщения
Я пытаюсь показать счетчик с SVProgressHUD, и когда я получаю асинхронный ответ от сервера, отклонить этот hud и показать другой hud с сообщением, полученным с сервера.
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
SVProgressHUD.setDefaultStyle(.Custom)
SVProgressHUD.setForegroundColor(UIColor.whiteColor())
SVProgressHUD.setBackgroundColor(UIColor.clearColor())
SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.Clear)
SVProgressHUD.show()
loadData()
}
private func loadData() {
ApiService.getData { (succeed, message) -> () in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.dismissHud()
})
dispatch_async(dispatch_get_main_queue(), { () -> Void in
SVProgressHUD.showInfoWithStatus("I can't see this")
})
}
Если я удаляю код в viewDidAppear, который показывает HUD, я вижу сообщение. Есть идеи? Спасибо
2 ответа
Две вещи не так, во-первых, зачем отправлять в один и тот же поток дважды? и во-вторых, если вы хотите просто показать HUD, не отклоняйте его.
SVProgressHUD.showInfoWithStatus
будет скрывать сообщение через некоторое время.
Причина, по которой вы не видите второй HUD, заключается в том, что он все еще удаляет первый. Поскольку вы просто хотите обновить, не звоните в отставку.
У меня есть изменения FadeInAnimationDuration
а также FadeoutAnimationDuration
в 0.0
и это прекрасно работает для меня. Я использую HUD, как это:
Чтобы показать HUD:
func showActivityLoader() {
dispatch_async(dispatch_get_main_queue(), {
SVProgressHUD.setFadeInAnimationDuration(0.0)
SVProgressHUD.setFadeOutAnimationDuration(0.0)
SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.Clear)
SVProgressHUD.show()
})
}
Чтобы скрыть HUD:
func dismissActivityLoader() {
dispatch_async(dispatch_get_main_queue(), {
SVProgressHUD.dismiss()
})
}