单击单元格时,如何按照排序移动单元格?

时间:2019-06-07 16:04:18

标签: ios swift uitableview core-data ios13

我正在寻找一种根据种类将其移动到其位置的方法。

我已经搜索过Google,但没有找到太多信息,而且个人之前从未做过类似的事情。

这是我的排序

 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字段,因此它现在会相应地移动它们,但现在它不会像预期的那样划掉文本。

1 个答案:

答案 0 :(得分: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)
        }