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

标签: ios swift svprogresshud


【解决方案1】:

有两个问题,首先为什么要分派到同一个线程两次?其次,如果您只想显示 HUD,请不要关闭它。

SVProgressHUD.showInfoWithStatus 将在一段时间后隐藏该消息。
您没有看到第二个 HUD 的原因是它仍在删除第一个 HUD。既然您只想更新,请不要调用驳回。

【讨论】:

    【解决方案2】:

    我已将 FadeInAnimationDurationFadeoutAnimationDuration 更改为 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()
                })
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      相关资源
      最近更新 更多