在我的项目中从服务器下载数据,下载代码在App Delegate.m文件中 一旦我将下载状态(以字节为单位)传递给NSNotification对象。在我的ViewController中尝试使用上面的下载状态更新UIProgressView。当我记录Downlaoding状态(下载的字节数)时,我得到正确的值。但是当我试图在UIProgressView中显示它并且它没有显示任何内容时。
代码
App delegate.m
ViewController *viewC=[[ViewController alloc]init];
[viewC postNotificationWithValue:bytesDownloaded:totalSize];
在ViewController.m中
- (void)viewDidLoad
{
_progreeView.progress = 0.0; //UIProgressView
NSString *notificationName = @"MTPostNotificationTut";
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(useNotificationWithString:)
name:notificationName
object:nil];
}
- (void)postNotificationWithString:(NSUInteger )current:(NSUInteger )total {
// NSLog(@"%f",(double)current/(double)total);
float status=(double)current/(double)total;
_downloadStatus.text=[NSString stringWithFormat:@"%f",status];
[_progreeView setProgress:status animated:YES];
}
我的UIProgressbar根本没有更新。请帮助我
答案 0 :(得分:1)
您是否检查_progreeView
是否不是nil
?
为什么不从ViewController
加载nib
:
NSArray *viewArray = [[NSBundle mainBundle] loadNibNamed:@"ViewController"
owner:self
options:nil];
ViewController *vc = (ViewController*)[viewArray objectAtIndex:0];
无论如何,如果不深入你的代码,我认为问题是因为你没有从主线程更新UI。 确保你更新:
[_progreeView setProgress:status animated:YES];
来自 MAIN 主题。
任何UI更改都必须在主线程上 - 请记住!
所以你可以把它包起来:
dispatch_async(dispatch_get_main_queue(), ^{
[_progreeView setProgress:status animated:YES];
}