如何支持滑动删除具有组合布局的 UICollectionView 列表中的行?

Aus*_*lon 3 uikit ios uicollectionview uicollectionviewcompositionallayout

以前对于表视图,这是在UITableViewDataSource委托回调中完成的tableView(_:commit:forRowAt:)。与新集合视图关联的 API 中是否有等效功能,或者推荐的实现方法?

mat*_*att 9

用于创建布局的 UICollectionLayoutListConfiguration 具有采用索引路径的函数的属性leadingSwipeActionsConfigurationProvider。您的函数可以为列表的不同行trailingSwipeActionsConfigurationProvider返回不同的滑动操作,或:nil

var config = UICollectionLayoutListConfiguration(appearance: .plain)
config.trailingSwipeActionsConfigurationProvider = { indexPath in
    let del = UIContextualAction(style: .destructive, title: "Delete") {
        [weak self] action, view, completion in
        self?.delete(at: indexPath)
        completion(true)
    }
    return UISwipeActionsConfiguration(actions: [del])
}
Run Code Online (Sandbox Code Playgroud)

写作delete(at:)留给读者作为练习;基本上,您只需执行与在任何集合视图中执行的操作相同的操作即可。