UILabel更新

时间:2014-04-10 12:48:35

标签: ios objective-c uilabel

我只是更新UILabel,代码是

-(void)updateUI
{
    _syncCountLbl.text=[Global retrieveFromUserDefaults:@"dbCountKey"]
    if ([_syncCountLbl.text isEqualToString:@"0"]) {
        [_syncCountLbl setHidden:YES];
    }
    else
        [_syncCountLbl setHidden:NO];
}

我在

时调用此方法

在控制台中,它显示文本,但不在UI中更新。

UILabel: 0x166c9900; frame = (39 0; 23 22); text = '3'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x166c99a0

1 个答案:

答案 0 :(得分:1)

如果您从主线程以外的调用updateUI方法,则无法保证用户界面立即更新。它可能在20秒,45秒或从不发生,具体取决于下一个UI元素请求UI更新。

在调用任何UIKit代码之前尝试调度到主线程:

-(void)updateUI
{
    dispatch_async(dispatch_get_main_queue(), ^{
        _syncCountLbl.text=[Global retrieveFromUserDefaults:@"dbCountKey"]
        if ([_syncCountLbl.text isEqualToString:@"0"]) {
            [_syncCountLbl setHidden:YES];
        }
        else
            [_syncCountLbl setHidden:NO];
    });
}