【发布时间】:2015-09-14 13:26:19
【问题描述】:
我正在尝试使用 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 的代码,我可以看到该消息。 有任何想法吗?谢谢
【问题讨论】:
-
我认为您的
dissmisshud代码隐藏了所有显示在 Windows 中的 hud。并且可能是shoinfowithstatus在dissmisshud方法之前调用,请通过断点检查。 -
不,第 33 行在 36 之前执行。我还尝试在调用 dismissHud() 之后显示 hud。
-
有两个问题,首先为什么要分派到同一个线程两次?其次,如果您只想显示 HUD,请不要关闭它。
SVProgressHUD.showInfoWithStatus将在一段时间后隐藏该消息。您没有看到第二个 HUD 的原因是它仍然删除了第一个。既然您只想更新,请不要调用驳回。 -
在我的脑海中...保留周期?在
(succeed, message ...前面加上[weak self],可能self不再可用。 (尽管我认为它会崩溃) -
rckones,你是对的,如果我不关闭 hud,我可以显示另一条消息。是的,两次分派到同一个线程没有任何意义,对不起。
标签: ios swift svprogresshud