0

我正在寻找一种在根据排序点击到其位置时移动单元格的方法。

我用谷歌搜索并没有找到太多,而且我个人以前从未做过这样的事情。

这是我的类型

 let sort = NSSortDescriptor(key: #keyPath(Item.name), ascending: true)

这是我的didSelectRow

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let item = fetchedRC.object(at:indexPath)

    item.isComplete.toggle()

    do {
        try context.save()
        //tableView.deselectRow(at: [indexPath.row], animated: true)
        //tableView.reloadRows(at: [indexPath], with: .automatic)
    } catch let error as NSError {
        print("Could not save. \(error.localizedDescription)")
    }
}

我希望将选定的单元格划掉(我已经处理过)并移动到 tableView 的底部,这就是我的排序正在做的事情。排序仅在加载时起作用,如预期的那样,但我想在表格初始出现后将被选中的单元格移动到各自的位置。

编辑:我决定测试排序,它被设置为我的名字而不是我的isComplete字段,所以它现在相应地移动它们,但现在它不会像它应该做的那样划掉文本。

4

1 回答 1

0

我终于找到了这个解决方案,它似乎按预期工作。我需要做的就是把我的兴奋换成.move这个。

case .move:
        if indexPath != nil {
            self.tableView.deleteRows(at: [currentIndexPath!], with: .automatic)
        }
        if let newIndexPath = newIndexPath {
            self.tableView.insertRows(at: [newIndexPath], with: .automatic)
        }
于 2019-06-08T12:45:06.950 回答