我只是更新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
答案 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];
});
}