Этот подход удаляет случайную ячейку, но не ту, которую я хочу.Я думаю, что проблема заключается в инициализации кнопки с помощью indexPath, и я не знаю, как это исправить.
Если я не ошибаюсь, indexPath.item указывает строку в UICollectionView.Так где же ошибка?
extension UIButton {
struct Holder {
static var _myComputedProperty:IndexPath!
}
var indexPath:IndexPath {
get {
return Holder._myComputedProperty
}
set(newValue) {
Holder._myComputedProperty = newValue
}
}
}
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return arrRequest.count
}
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! RequestCell
cell.delete.indexPath = indexPath
cell.delete.addTarget(nil, action: #selector(del(sender:)), for: .touchUpInside)
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: collectionView.frame.width, height: 235)
}
@objc func del(sender: UIButton) {
arrRequest.remove(at: sender.indexPath.item)
self.collectionView.performBatchUpdates({
self.collectionView.deleteItems(at: [sender.indexPath])
}) { (finished) in
self.collectionView.reloadItems(at: self.collectionView.indexPathsForVisibleItems)
}
}