tableViewCell 中的行在滚动时改变它们的位置

Rows in tableViewCell changes their places when scrolling

我有一个 tableView 里面有 myCustomCell

此单元格包含一个 按钮 进度视图 。通过单击按钮文件下载开始,进度视图显示下载进度。一切都很好,除了我在任何单元格中开始下载后滚动 tableView 的那一刻 - 进度视图显示在其他单元格中,而不是我首先单击的单元格中。例如,如果我单击第一个单元格并向下滚动一点 - 滚动停止后第一个单元格将显示下载文件的进度。如果我开始 2 次或更多次下载,它们都会改变它们的位置。

这里是一个显示问题的短视频:https://youtu.be/BTtU94ODbBI

cell可以在tableView中多次随机改变位置,而且progress view可以移动到另一个单元格)

我该如何解决?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath tableview 委托给您,即视图控制器,为 tableview 提供要呈现的单元格。

当该单元格离开屏幕时,在此方法中回收和重复使用是公平的游戏。 您的问题源于回收电池仍保持其先前状态。

要停止此行为,每次您在此函数中创建(或获取)一个单元格时,hide/reset 任何进度都会更新。 cellForRowAtIndexPath 每次请求一个单元格时都应该得到一个干净的单元格,您应该只在呈现单元格之前配置它。

在你的情况下,myCustomCell 可能有一个方法 - (void) clean; 将 progressView 设置为隐藏,将标题设置为 @"" 等。一旦 cell 调用它已创建,您可以开始了