【问题标题】:UITableView cells in random order after using scrollToRow使用 scrollToRow 后以随机顺序排列的 UITableView 单元格
【发布时间】:2021-10-10 14:17:51
【问题描述】:

所以在我将这段代码添加到评论下方之后:

DispatchQueue.main.async {
    self.tableView.reloadData()

    // HERE
    let indexPath = IndexPath(row: self.messages.count - 1, section: 0)
    self.tableView.scrollToRow(at: indexPath, at: .top, animated: true)
}

滚动时我的单元格混乱(随机生成)。在添加此代码之前,它们的行为符合预期。

我认为这与细胞被重复使用有关,我不知道如何解决这个问题。

有什么解释吗?

cellForRowAt 方法的更多细节:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: K.cellIdentifier, for: indexPath) as! MessageCell
        cell.messageText.text = messages[indexPath.row].body
        if Auth.auth().currentUser?.email == messages[indexPath.row].sender{
            cell.isIncoming = false
        } else {
            cell.isIncoming = true
        }
        return cell
    }

【问题讨论】:

    标签: ios swift uitableview uikit


    【解决方案1】:

    细胞被回收。在表格视图的数据源中,您需要将单元格出列并使用模型中的数据对其进行全面配置。

    如果您允许您的用户与您的表格视图进行交互,您需要将这些更改保存到您的模型中,这样如果单元格滚动到屏幕外,您可以在它滚动回屏幕时正确地重新创建它。

    您没有提供足够的信息来说明您如何设置单元,以便我们提供更多帮助。

    如果您需要更具体的帮助,请编辑您的问题以显示您的数据源方法(尤其是您的 tableView(_:cellForRowAt:) 方法。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多