gpt4 book ai didi

ios - UIProgressView 未在 iOS 中更新

转载 作者:行者123 更新时间:2023-11-29 02:29:01 24 4
gpt4 key购买 nike

在我的项目中,我正在从服务器下载数据,下载代码位于 App Delegate.m 文件中,有一次将下载状态(以字节为单位)传递给 NSNotification 对象。在我的 ViewController 中,我尝试使用上述下载状态更新 UIProgressView。当我记录下载状态(下载的字节数)时,我得到了正确的值。但是当我试图在 UIProgressView 中显示这一点时,它没有显示任何内容。

代码

应用程序委托(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 根本没有更新。请帮助我

最佳答案

你检查过 _progreeView 是否不是 nil 吗?!为什么不从 nib 加载 ViewController :

NSArray *viewArray = [[NSBundle mainBundle] loadNibNamed:@"ViewController"
owner:self
options:nil];

ViewController *vc = (ViewController*)[viewArray objectAtIndex:0];

无论如何,无需深入研究您的代码,我认为问题在于您没有从主线程更新 UI。确保您更新:

[_progreeView  setProgress:status animated:YES];

来自线程。

任何 UI 更改都必须在主线程上进行 - 记住这一点!

所以你可以像这样包装它:

dispatch_async(dispatch_get_main_queue(), ^{
[_progreeView setProgress:status animated:YES];
}

关于ios - UIProgressView 未在 iOS 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27146223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com