Ios 如何修复swift 4中的UITableView单元格重复
当我创建一个新单元时,它会自动标记 或者当我标记第一个时,我正在创建多个 单元格中,将标记重复项Ios 如何修复swift 4中的UITableView单元格重复,ios,swift,uitableview,Ios,Swift,Uitableview,当我创建一个新单元时,它会自动标记 或者当我标记第一个时,我正在创建多个 单元格中,将标记重复项 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let itemCellIdentifier = "itemCell" guard let itemCell = itemCardTableView.dequeu
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let itemCellIdentifier = "itemCell"
guard let itemCell = itemCardTableView.dequeueReusableCell(withIdentifier: itemCellIdentifier, for: indexPath) as? ItemCardTableViewCell else {
return UITableViewCell()
}
let itemCard = dataManager.items[indexPath.row]
itemCell.itemTitle.text = itemCard.title
if itemCard.isFinish {
itemCell.itemCellView.backgroundColor = UIColor(red: 0, green: 123, blue: 0)
}
return itemCell
}
添加单元法
let confirm = UIAlertAction(title: "確認", style: .default) { (action: UIAlertAction) in
guard let title = addAlert.textFields?.first?.text else { return }
let newItem = ItemCard(title: title, isFinish: false)
self.dataManager.items.append(newItem)
let indexPath = IndexPath(row: self.itemCardTableView.numberOfRows(inSection: 0), section: 0)
self.itemCardTableView.insertRows(at: [indexPath], with: .left)
当我创建新数据时,isFinish=false
如何修复数据重复?如果我正确理解了您的问题,您应该将
isFinish
标记保留在单元格外的某个位置,因为tableView正在重用它
您可以创建
finished=[Bool]()
作为您的UIViewController,每次检查finished[indexPath.row]
以查看它是否被标记,并将布尔值传递给您的单元格。您应该提供else case来设置默认背景色
if itemCard.isFinish {
itemCell.itemCellView.backgroundColor = UIColor(red: 0, green: 123, blue: 0)
} else {
itemCell.itemCellView.backgroundColor = UIColor.white
}