gpt4 book ai didi

ios - 在 Swift 中从 UITableView 中删除一个单元格

转载 作者:搜寻专家 更新时间:2023-11-01 05:57:50 25 4
gpt4 key购买 nike

从 tableView 中删除单元格时,动画运行正常,但 tableView 数据不会重新加载。我尝试在没有 .beginUpdates().endUpdates() 的情况下运行,而是使用 .reloadData(),并且该过程有效但动画没有工作。

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
switch editingStyle {
case .Delete:
// remove the deleted item from the model
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
context.deleteObject(coreData[indexPath.row] as NSManagedObject)
coreData.removeAtIndex(indexPath.row)
do {
try context.save()
} catch {
print("Error deleting NSManagedObject")
}


tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
tasks.removeAtIndex(indexPath.row)
names.removeAtIndex(indexPath.row)
ids.removeAtIndex(indexPath.row)
tableView.endUpdates()
// remove the deleted item from the `UITableView`

default:
return

}

}

顺便说一下,tasks 数组是 tableView 的主要数据。

如何在删除单元格时使用流畅的删除动画重新加载数据?

最佳答案

需要考虑的两件事:

  1. 您必须在更新 TableView 之前更新数据模型。因此代码的顺序必须是:

    tasks.removeAtIndex(indexPath.row)
    names.removeAtIndex(indexPath.row)
    ids.removeAtIndex(indexPath.row)
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
  2. 无需调用 begin/endUpdates,因为您只需调用一次即可更新 TableView 。

关于ios - 在 Swift 中从 UITableView 中删除一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408215/

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