我遇到了尝试更新通过故事板连接的UILabel的问题。当我记录我的数据时,它显示在控制台中就好了,但我的标签没有按照它应该更新:
CZWundergroundRequest *request = [CZWundergroundRequest newConditionsRequest];
request.location = [CZWeatherLocation locationFromCoordinate: currentLocation];
request.key = @"";
[request sendWithCompletion:^(CZWeatherData *data, NSError *error) {
self.currentTemperatureLabel.text = [NSString stringWithFormat:@"%f", data.current.temperature.f];
NSLog(@"%f", data.current.temperature.f);
}];
当我在ViewDidLoad中更新标签时,它工作正常,但是一旦我尝试向其发送数据,它就不会更新。我试着取下标签并重新连接插座。有什么想法吗?
答案 0 :(得分:4)
您只能在主线程上更新UI元素,该请求可能会在后台线程上运行,以防止阻止UI。
如果您打包调用以在dispatch_async
上的main thread
设置标签,如下所示,它应该可以解决您的问题。
dispatch_async(dispatch_get_main_queue(), ^{
self.currentTemperatureLabel.text = [NSString stringWithFormat:@"%f", data.current.temperature.f];
});