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

How do you support swiping to delete a row in a UICollectionView list with compositional layout?

以前 table 视图是在 UITableViewDataSource 委托回调 tableView(_:commit:forRowAt:) 中完成的。在与 the new collection views 关联的 API 中是否有等效的功能,或者推荐的实现方式?

您用于创建布局的 UICollectionLayoutListConfiguration 具有 leadingSwipeActionsConfigurationProvidertrailingSwipeActionsConfigurationProvider 属性,它们是采用索引路径的函数。您的函数可以 return 不同的滑动操作,或 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:) 留作 reader 的练习;基本上,您只需做与在 any 集合视图中所做的完全相同的事情。