В методе IBAction вы можете получить триггерную кнопку в параметре отправителя.Перепишите свой метод делегата, чтобы передать кнопку и выбранную ячейку представления коллекции:
протокол SelectedItemCellDelegate: class {func deleteButton (_ deleteButton: UIButton, tappedInCell cell: SelectedItemCell)}
Перезаписать свой deleteActionпередать отправителя как UIButton
класс (или любой UIView
класс)
@IBAction func deleteAction(_ sender: UIButton) {
delegate?. deleteButton(sender, tappedInCell: self)
}
Затем вы можете добавить расширения как к UICollectionView, так и к UITableView, которые позволят вам определить ячейку, содержащую кнопку, используя координаты кнопки:
extension UICollectionView {
func indexPathForCellContaining( view: UIView) -> IndexPath? {
let viewCenter = self.convert(view.center, from: view.superview)
return self.indexPathForItem(at: viewCenter)
}
}
Или для табличных представлений:
public extension UITableView {
/**
This method returns the indexPath of the cell that contains the specified view
- Parameter view: The view to find.
- Returns: The indexPath of the cell containing the view, or nil if it can't be found
*/
func indexPathForView(_ view: UIView) -> IndexPath? {
let center = view.center
//The center of the view is a better point to use, but we can only use it if the view has a superview
guard let superview = view.superview else {
//The view we were passed does not have a valid superview.
//Use the view's bounds.origin and convert from the view's coordinate system
let origin = self.convert(view.bounds.origin, from: view)
let indexPath = self.indexPathForRow(at: origin)
return indexPath
}
let viewCenter = self.convert(center, from: superview)
let indexPath = self.indexPathForRow(at: viewCenter)
return indexPath
}
}
Поскольку вы уже передали ячейку представления коллекции делегату, вы можете использовать func indexPath(for cell: UICollectionViewCell)
, чтобы получить indexPath для ячейки CollectionView.Если вы можете получить указатель на табличное представление, вы можете использовать указанное выше расширение табличного представления, чтобы получить индексный путь кнопки из табличного представления.