Как передать индекс ячейки для каждой из двух кнопок?

Для передачи индекса ячейки для каждой из двух кнопок вам потребуется использовать два разных подхода, в зависимости от контекста, в котором вы используете кнопки.

1. Если кнопки расположены внутри ячейки UITableView или UICollectionView:
- Создайте протокол с методом, который принимает индекс ячейки в качестве параметра:

     protocol CellButtonDelegate: AnyObject {
         func buttonTapped(at index: Int)
     }

- Добавьте делегатское свойство в ячейку, которое будет ссылаться на объект, подписанный на протокол:

     class CustomCell: UITableViewCell {
         weak var delegate: CellButtonDelegate?
         var cellIndex: Int = 0

         @IBAction func buttonTapped(_ sender: UIButton) {
             delegate?.buttonTapped(at: cellIndex)
         }
     }

- В методе cellForRowAt indexPath в вашем классе UITableViewController или UICollectionViewController установите делегат для кнопок:

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
         cell.delegate = self
         cell.cellIndex = indexPath.row
         return cell
     }

- Подпишите ваш класс UITableViewController или UICollectionViewController на протокол CellButtonDelegate и реализуйте метод buttonTapped:

     extension YourViewController: CellButtonDelegate {
         func buttonTapped(at index: Int) {
             // Обработка нажатия кнопки для ячейки с индексом index
         }
     }

2. Если кнопки находятся не внутри ячейки таблицы или коллекции, а например, в футере или хедере:
- Создайте свойство с типом массива для хранения индексов ячеек:

     var cellIndexes: [Int] = []

- При заполнении данных в методе cellForRowAt indexPath добавляйте индекс ячейки в массив:

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         // Создание ячейки...
         cellIndexes.append(indexPath.row)
     }

- В методе кнопки обрабатывайте нажатие и передавайте соответствующий индекс из массива:

     @IBAction func buttonTapped(_ sender: UIButton) {
         guard let index = cellIndexes.firstIndex(where: { $0 == sender.tag }) else { return }
         // Обработка нажатия кнопки для ячейки с индексом index
     }

Обратите внимание, что здесь вам потребуется настроить свойство tag для каждой кнопки, чтобы оно соответствовало идентификатору ячейки.

Таким образом, в зависимости от контекста вашего приложения и расположения кнопок, вы можете использовать один из этих подходов для передачи индекса ячейки для каждой из двух кнопок в Swift.