标签需要几秒钟才能取消隐藏

时间:2014-09-24 16:31:48

标签: iphone xcode swift ios8

所以我最近开始使用 Swift ,基本上我有一个UILabel用于显示错误消息。这个标签是隐藏的(通过故事板的隐藏复选标记,我尝试将其设置为隐藏在viewDidLoad中)。

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

(NSURLSession.dataTaskWithRequest)

这是我的问题:

当erorrlabel应该被取消隐藏时,我将它的隐藏属性设置为false,println(“应该立即取消隐藏”)并显示警告。 alert和print语句立即执行。但是,标签在显示之前需要几秒钟。

我已经在模拟器中的4s,5,5s和6上尝试了这个并且实际的5s,我仍然遇到这个问题。我还尝试使用(self.errorLabel.hidden = false and self.erorLabel.text = "ERROR MESSAGE HERE").手动刷新视图,但仍然无效。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

将代码包含在此块中:

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

答案 1 :(得分:0)

感谢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
        }
    });