故事板UILabel不会更新文本。

时间:2017-04-12 10:14:26

标签: ios objective-c storyboard

我遇到了尝试更新通过故事板连接的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中更新标签时,它工作正常,但是一旦我尝试向其发送数据,它就不会更新。我试着取下标签并重新连接插座。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您只能在主线程上更新UI元素,该请求可能会在后台线程上运行,以防止阻止UI。

如果您打包调用以在dispatch_async上的main thread设置标签,如下所示,它应该可以解决您的问题。

dispatch_async(dispatch_get_main_queue(), ^{ self.currentTemperatureLabel.text = [NSString stringWithFormat:@"%f", data.current.temperature.f]; });