在iOS中,如何检测UITableview中的单元格是否正在被滑动?

use*_*854 4 uitableview swipe ios swift

我用来leadingSwipeActionsConfigurationForRowAt检测和处理滑动。但是,我需要能够检测用户何时开始滑动(但在完成之前)。问题是,如果我在滑动单元格时使用reloadData()beginUpdates()/更新endUpdates()表格,它会将单元格重置到未滑动的位置(我不喜欢这种用户体验)。我希望能够延迟单元格/数据更新,直到滑动完成或取消。

use*_*854 7

尽管安德烈亚斯的答案绝对正确,但我找到了一种更简单的方法。显然,无论何时leadingSwipeActionsConfigurationForRowAt使用,只要开始滑动单元格就会被标记为正在编辑。这使我们能够在 上使用willBeginEditingRowAt和,而不必担心didEndEditingRowAtUITableViewUITableViewCell

var swipedRow: IndexPath? = nil
        
func tableView(_ tableView: UITableView, willBeginEditingRowAt indexPath: IndexPath) {
    swipedRow = indexPath
}
    
func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) {
    swipedRow = nil
}
Run Code Online (Sandbox Code Playgroud)

然后你可以检查是否swipedRow == nil(另外,如果不是nil,你就会知道被刷的行的indexPath)