SVProgressHUD 在显示另一条消息后不显示

Posted

技术标签:

【中文标题】SVProgressHUD 在显示另一条消息后不显示【英文标题】:SVProgressHUD doesnt show after showing another message 【发布时间】: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,我可以显示另一条消息。是的,两次分派到同一个线程没有任何意义,对不起。 【参考方案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()
            )
    

【讨论】:

以上是关于SVProgressHUD 在显示另一条消息后不显示的主要内容,如果未能解决你的问题,请参考以下文章

UIImageview 被添加到另一个子视图 UIScrollview 后不显示

Firebase消息通知在Android pie上强制终止后不显示通知

Debian Wheezy 删除安静参数后不显示启动消息

SVProgressHUD 无法显示状态

DAO RecordsAffected 在 passthru 合并后不返回正确的值

Qt正常状态栏在临时状态后不显示