繁体   English   中英

如何在 iOS 14 中使用列表配置在 UICollectionView 中启用多选?

[英]How to enabled multiple selection in UICollectionView using list configuration in iOS 14?

我正在尝试实现类似选择样式的 iOS 消息应用程序:在编辑模式下,所有行的左侧都有一个复选标记。

我将 UICollectionView 与 Apple 在 iOS 14 中引入的列表配置一起使用,似乎多选的实现已经改变。

Modern Collection Views/Lists/ReorderableListViewController.swift实施现代集合视图为〔实施例。

这就是我所做的:

  1. viewDidLoad底部添加以下代码:
 navigationItem.setLeftBarButton(editButtonItem, animated: true)
 collectionView.allowsMultipleSelection = true
 collectionView.allowsMultipleSelectionDuringEditing = true
  1. 覆盖setEditing方法:
override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: true)
    self.collectionView.isEditing = editing
}
  1. 实现UICollectionViewDelegate
extension ReorderableListViewController: UICollectionViewDelegate {
  func collectionView(_ collectionView: UICollectionView,
                      shouldBeginMultipleSelectionInteractionAt indexPath: IndexPath) -> Bool {
    return true
  }
  
  func collectionView(_ collectionView: UICollectionView,
                      didBeginMultipleSelectionInteractionAt indexPath: IndexPath) {
    print(#function)
    self.collectionView.isEditing = true
  }
}
  1. 仅在编辑模式下显示重新排序句柄(在configureDataSource ):
cell.accessories = [.disclosureIndicator(), .reorder(displayed:.whenEditing)]

通过这些更改,我可以看到当点击编辑按钮时切换手柄。 但是左侧没有复选标记来指示当前选定的项目。

尝试这样做:

collectionView.allowsMultipleSelection = false

cell.accessories = [
  .disclosureIndicator(),
  .reorder(displayed:.whenEditing),
  .multiselect()
]

复选标记将在编辑模式下显示。

我想出了怎么做。 使用自定义配件并将其放在领先位置。

configureDataSourcecellRegistration

let checkmark = UIImage(systemName: "checkmark.circle.fill")           
let checkmarkImageView = UIImageView(image: checkmark)
let checkmarkViewConguration = UICellAccessory.CustomViewConfiguration(
    customView: checkmarkImageView,
    placement: .leading(displayed: .whenEditing, at: { _ in 0 }))

cell.accessories = [
    .customView(configuration: checkmarkViewConguration),
    .disclosureIndicator(), 
    .reorder(displayed:.whenEditing)
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM