将 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 约束问题

UIProgressView

uiprogressview 没有出现在 iOS 7 中的 uitableview 下面

iOS 7.1 中以编程方式创建的 UIProgressView 的高度被忽略(始终为 2)

改变 UIProgressView 的位置?

如何在 UIToolbar 中的 UIProgressView 上方添加标签?