gpt4 book ai didi

ios - UITableView 在删除一行或多行后留下空白单元格的模式

转载 作者:可可西里 更新时间:2023-11-01 00:38:37 39 4
gpt4 key购买 nike

TableView leaving blank cells

Repeating blank cells

When deleting rows from the bottom

在我的 TableView 中删除一行或多行后,TableView 单元格似乎以一种奇怪的方式移动或刷新,从而创建多个空白行。似乎从屏幕外的行开始。

我已尝试使用 beginUpdates、endUpdates 和 performBatchUpdates,但行为没有任何变化。我还确认数据源数组正在正确更新,表格 View 中的行数也是如此。

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return paymentsArray.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! UserPaymentCell

let payment = paymentsArray[indexPath.row]
cell.payment = payment

cell.selectionStyle = .none

cell.preservesSuperviewLayoutMargins = false
cell.separatorInset = UIEdgeInsets(top: 0, left: 75, bottom: 0, right: 0)
cell.layoutMargins = UIEdgeInsets.zero

return cell
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}


func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {

let payment = paymentsArray[indexPath.row]

if payment.payerUID == Auth.auth().currentUser?.uid {
return true
} else {
return false
}
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

let payment = paymentsArray[indexPath.row]

switch editingStyle {
case .delete:
deleteBillAndRefreshTotals(bill: payment, indexPath: indexPath)
default:
return
}
}

func deleteBillAndRefreshTotals(bill: Bill, indexPath: IndexPath) {
print("DELETING CELL")
paymentsArray.remove(at: indexPath.row)
paymentsTableView.deleteRows(at: [indexPath], with: .automatic)
print(paymentsTableView.numberOfRows(inSection: 0))
}

预期结果 - 行被删除并且被删除单元格上方或下方的所有单元格一起移动。

最佳答案

override func prepareForReuse() {
super.prepareForReuse() // <--
self.nameLabel.text = nil
self.backgroundColor = .white
}

在我的自定义单元实现中,调用上述函数时没有首先调用super.prepareForReuse。因此导致上述问题。

关于ios - UITableView 在删除一行或多行后留下空白单元格的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391977/

39 4 0
文章推荐: php - 使用 Amazon API 获取产品详细信息
文章推荐: javascript - 错误 : Callback was already called when using pg-promise with async series
文章推荐: swift - swift 抛出可选错误最干净的方法是什么?
文章推荐: php - 从 php 中的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com