gpt4 book ai didi

ios - 在 UITableViewCell 中显示多个图像上传的进度指示器

转载 作者:行者123 更新时间:2023-12-01 17:04:42 25 4
gpt4 key购买 nike

我有带有自定义单元格的 UITableView。我想显示多个图像上传的进度指示器。

我试过 reloadRowAtIndexPath UITableView 的方法,但它没有足够的解决方案,因为单元格不断闪烁,看起来很奇怪。

我发现的另一个解决方案是 将我的进度指示器 View 的引用存储在全局变量 中的 UITableViewCell 中然后在 UITableView 数据源方法之外对其进行修改,但在此解决方案中,我遇到了一个问题,即我必须跟踪 UITableViewCell 的多个进度指示器 View 对象,这很困难,因为 UITableView 数据源是二维 NSMutableArray(数组内的短数组)所以由于多个部分,我没有唯一的 IndexPath.row。那么如何管理进度指示器 View 的对象呢?

还有没有更好的解决方案来完成这类工作?

最佳答案

好的,当我找不到其他任何东西时,这就是我在我的一个项目中使用的。

swift 3

创建一个 NSObject 的子类(因为 URLSession 的子类不会让您设置配置和其他参数,因为唯一指定的初始化程序是 init()),其中包括启动上传过程的单元格的信息,如 IndexPath 和也是一个 URLSession 对象。

每当您要上传时,使用此子类创建新的 URLSession(我使用 URLSession 的 uploadTask 方法)。

创建uploadTask并开始上传。

您还必须创建自己的由 URLSession 的普通协议(protocol)方法调用的协议(protocol)方法,以将您的自定义子类而不是 URLSession 对象发送给您想要的委托(delegate)。

然后在该委托(delegate)中,您可以检查存储在您从上一步获得的自定义子类中的 indexPath 信息并更新相应的单元格。

我猜也可以通过使用通知来实现。

以下是我编写的示例应用程序的屏幕截图:

enter image description here

public class TestURLSession:NSObject, URLSessionTaskDelegate {

var cellIndexPath:IndexPath!
var urlSession:URLSession!
var urlSessionUploadTask:URLSessionUploadTask!
var testUrlSessionDelegate:TestURLSessionTaskDelegate!

init(configuration: URLSessionConfiguration, delegate: TestURLSessionTaskDelegate?, delegateQueue queue: OperationQueue?, indexPath:IndexPath){
super.init()
self.urlSession = URLSession(configuration: configuration, delegate: self, delegateQueue: queue)
self.cellIndexPath = indexPath
self.testUrlSessionDelegate = delegate
}

func uploadTask(with request: URLRequest, from bodyData: Data) -> URLSessionUploadTask{
let uploadTask = self.urlSession.uploadTask(with: request, from: bodyData)
self.urlSessionUploadTask = uploadTask
return uploadTask
}


public func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64){
self.testUrlSessionDelegate.urlSession(self, task: self.urlSessionUploadTask, didSendBodyData: bytesSent, totalBytesSent: totalBytesSent, totalBytesExpectedToSend: totalBytesExpectedToSend)
}

}

protocol TestURLSessionTaskDelegate : URLSessionDelegate {

func urlSession(_ session: TestURLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64)

}

欢迎编辑。

关于ios - 在 UITableViewCell 中显示多个图像上传的进度指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39523776/

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