在自定义代理中更改属性时不会更新
问题描述:
我有AppDelegate的ACPDownloadView实例。它显示下载进度。当我在视图控制器中更新它的进度值时,它工作正常。在自定义代理中更改属性时不会更新
appdelegate.downloadVew=[[ACPDownloadView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
appdelegate.downloadVew.backgroundColor=[UIColor clearColor];
progressBtn= [[UIBarButtonItem alloc] initWithCustomView:appdelegate.downloadVew];
ACPIndeterminateGoogleLayer * layer = [ACPIndeterminateGoogleLayer new];
[layer updateColor:[UIColor blueColor]];
[appdelegate.downloadVew setIndeterminateLayer:layer];
[appdelegate.downloadVew setIndicatorStatus:ACPDownloadStatusRunning];
[appdelegate.downloadVew setProgress:0.0 animated:NO];
现在,我有一个委托方法,当进度更新时调用。
-(void)progressAddChannel:(NSProgress *)uploadProgress{
float prog=uploadProgress.fractionCompleted;
[appdelegate.downloadVew setProgress:prog animated:YES];
[appdelegate.downloadVew layoutIfNeeded];
NSLog(@"%f",prog);
}
此代码执行和显示的进度正确的值。但是这一进展并没有激发appdelegate.downloadVew的活力。有人知道这种行为吗?
答
由于您正在进行UI更改,请确保您的代码在主线程上运行。
您是否检查代码是否在主线程上运行? – Jelly
不,我没有。我现在检查。谢谢。 – bisma
非常感谢。这是我的问题。我没有在MainThread上调用它。 – bisma