Вам необходимо провести рефакторинг вашего кода. Текущая реализация addProductToCartButton
использует отправителя (кнопку) для определения пути индекса. А затем остальная часть кода основана на этом пути индекса.
Затем у вас есть didTapAddToCart
метод, который пытается вызвать addProductToCartButton
, но у вас нет кнопки на данный момент, но у него есть индексный путь.
Я бы создал новую функцию, которая принимает путь индекса в качестве параметра. Его реализация представляет собой большую часть существующего кода в addProductToCartButton
.
Вот новая функция (в основном это оригинальный addProductToCartButton
код):
func addProduct(at indexPath: IndexPath) {
let cell = productsTableView.cellForRow(at: indexPath) as! ProductTableViewCell
let imageViewPosition : CGPoint = cell.productImageView.convert(cell.productImageView.bounds.origin, to: self.view)
let imgViewTemp = UIImageView(frame: CGRect(x: imageViewPosition.x, y: imageViewPosition.y, width: cell.productImageView.frame.size.width, height: cell.productImageView.frame.size.height))
imgViewTemp.image = cell.productImageView.image
animationProduct(tempView: imgViewTemp)
// End animation region
}
Затем повторите addProductToCartButton
как:
func addProductToCartButton(_ sender: UIButton) {
// Start animation region
let buttonPosition : CGPoint = sender.convert(sender.bounds.origin, to: self.productsTableView)
let indexPath = self.productsTableView.indexPathForRow(at: buttonPosition)!
addProduct(at: indexPath)
}
И, наконец, обновление didTapAddToCart
:
func didTapAddToCart(_ cell: ProductTableViewCell) {
let indexPath = self.productsTableView.indexPath(for: cell)
addProduct(at: indexPath)
}