【问题标题】:Label takes a couple of seconds to unhide标签需要几秒钟才能取消隐藏
【发布时间】:2014-09-24 16:31:48
【问题描述】:

所以我最近开始使用 Swift,基本上我有一个 UILabel 用来显示错误消息。该标签最初是隐藏的(通过情节提要的隐藏复选标记,我也尝试将其设置为隐藏在 viewDidLoad 中)。

当用户单击登录时,一个 apicontroller 类会发布到后端服务器以检查凭据。 apicontroller 有一个在completionHandler 中调用的委托(NSURLSession.dataTaskWithRequest)。 viewcontroller 中的协议方法检查 http 状态,如果它是 200,它会移动到下一个视图。但是,如果不是 200,视图控制器会取消隐藏错误标签

(self.errorLabel.hidden = false and self.erorLabel.text = "ERROR MESSAGE HERE").

这是我的问题:

当 errrlabel 应该不隐藏时,我将它的 hidden 属性设置为 false,println("should be unhidden now") 并显示警报。警报和打印语句会立即执行。但是,标签需要几秒钟才能显示出来。

我已经在模拟器中的 4s、5、5s 和 6 以及实际的 5s 上尝试过这个,但我仍然遇到这个问题。我还尝试使用self.view.setNeedsDisplay() 手动刷新视图,但它仍然无法正常工作。

有什么想法吗?

【问题讨论】:

  • 您应该包含代码的相关部分,或者最好包含足够的代码以允许其他人重现该问题。

标签: iphone xcode swift ios8


【解决方案1】:

您可能在不是主线程的线程中更新标签。

将代码附在此块内:

dispatch_async(dispatch_get_main_queue()) {
    // Update the label here
}

【讨论】:

    【解决方案2】:

    感谢 Antonio 向我提出这个问题。它确实解决了我在这里问的问题:https://stackoverflow.com/questions/26800093/setting-iboutlet-in-closure-result-in-swift

    这是对我有用的最后一段代码:

        homeModel.GetHomeData({(textResult:String!) in
    
            dispatch_async(dispatch_get_main_queue())
            {
                // Update the textview in the ui here
                self.homeTextView.text = textResult
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      相关资源
      最近更新 更多