将 UIProgressView 添加到 NSURLConnection?
Posted
技术标签:
【中文标题】将 UIProgressView 添加到 NSURLConnection?【英文标题】:Add UIProgressView to a NSURLConnection? 【发布时间】:2011-12-05 07:17:27 【问题描述】:是否可以是否像获取数据的长度然后将其设置为 int 然后将该 int 发送到我的其他类到我的 UIProgressView 一样简单?
有人可以告诉我怎么做吗?是否有任何示例或链接可以为我指明正确的方向?
谢谢!!!
【问题讨论】:
【参考方案1】:在您的 didReceiveResponse
函数中,您可以像这样获得总文件大小 -
_totalFileSize = response.expectedContentLength;
.
在您的 didReceiveData 函数中,您可以将接收到的总字节数计数器相加 -
_receivedDataBytes += [data length];
现在,为了将进度条设置为正确的大小,您只需这样做 -
MyProgressBar.progress = _receivedDataBytes / (float)_totalFileSize
(在didReceiveData
函数中或代码中的其他位置)
不要忘记将保存字节数的变量添加到您的类中!
以下是您如何实现委托以更新进度视图
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
_totalFileSize = response.expectedContentLength;
responseData = [[NSMutableData alloc] init];
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
_receivedDataBytes += [data length];
MyProgressBar.progress = _receivedDataBytes / (float)_totalFileSize;
[responseData appendData:data];
我希望这会有所帮助..
【讨论】:
哇,谢谢!只有一件事,你能告诉我如何将这些值设置为另一个视图控制器中的 UIProgressView 吗? 为此您需要实现delegate
方法。这是 ios 在视图控制器之间共享数据或信息的标准做法。
这是最简单的方法吗?如果我必须使用委托方法,在这种情况下我将如何使用它?
不确定最简单的方法。但这是使用 ObjectiveC 在 ios 中开发应用程序时推荐的良好做法。更多信息请查看 - ***.com/questions/2534094/… & ***.com/questions/1045803/…
哦,我明白了!嗯,我想我需要将我的委托回调保留在它们所在的视图控制器中,因为那里发生了很多无法移动的事情。有没有其他方法可以通过使用属性来做到这一点?【参考方案2】:
接受的答案看起来太像这个了。 https://***.com/a/4255630 这才是真正引起我注意的地方。
(在 didReceiveData 函数或代码中的其他位置)
不要忘记将保存字节数的变量添加到您的类中!
【讨论】:
确实不错,哈哈。人们在劫持我的答案,我受宠若惊<:o>以上是关于将 UIProgressView 添加到 NSURLConnection?的主要内容,如果未能解决你的问题,请参考以下文章
uiprogressview 没有出现在 iOS 7 中的 uitableview 下面