【问题标题】:Add UIProgressView to a NSURLConnection?将 UIProgressView 添加到 NSURLConnection?
【发布时间】:2011-12-05 07:17:27
【问题描述】:

是否可以将 UIProgressView 添加到 NSURLConnection?是否像获取数据的长度然后将其设置为 int 然后将该 int 发送到我的其他类到我的 UIProgressView 一样简单?

有人可以告诉我怎么做吗?是否有任何示例或链接可以为我指明正确的方向?

谢谢!!!

【问题讨论】:

    标签: ios nsurlconnection asihttprequest 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 中开发应用程序时推荐的良好做法。更多信息请查看 - stackoverflow.com/questions/2534094/… & stackoverflow.com/questions/1045803/…
    • 哦,我明白了!嗯,我想我需要将我的委托回调保留在它们所在的视图控制器中,因为那里发生了很多无法移动的事情。有没有其他方法可以通过使用属性来做到这一点?
    【解决方案2】:

    接受的答案看起来太像这个了。 https://stackoverflow.com/a/4255630 这才是真正引起我注意的地方。

    (在 didReceiveData 函数或代码中的其他位置)

    不要忘记将保存字节数的变量添加到您的类中!

    【讨论】:

    • 确实不错,哈哈。人们在劫持我的答案,我受宠若惊<:o>
    猜你喜欢
    • 1970-01-01
    • 2011-12-20
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多