UIProgressView未在iOS中更新

时间:2014-11-26 10:04:41

标签: ios objective-c nsnotificationcenter uiprogressview

在我的项目中从服务器下载数据,下载代码在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根本没有更新。请帮助我

1 个答案:

答案 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];
}