首页 > 解决方案 > 您如何支持通过滑动删除具有组合布局的 UICollectionView 列表中的一行?

问题描述

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

标签: iosuicollectionviewuikituicollectionviewcompositionallayout

解决方案


用于创建布局的 UICollectionLayoutListConfiguration 具有作为采用索引路径的函数的属性leadingSwipeActionsConfigurationProvidertrailingSwipeActionsConfigurationProvider您的函数可以返回不同的滑动操作,或者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])
}

写作delete(at:)留给读者作为练习;基本上,您只需做与在任何集合视图中所做的完全相同的事情。


推荐阅读