в-третьих, вместо того, чтобы костылись и сохранять indexPath в ячейке (которая так то вьюха, а не хранилище данных), воспользуйся чем-нибудь вроде delegate?.cellButtonTap(self) а в делегате лови этот self как обычно вроде sender: UICollectionViewCell, тогда indexPath можно будет получить через collectionView.indexPath(for: cell)