Я предполагаю, что причина, по которой вы не хотите передавать модель, заключается в том, что наличие model
во всех трех методах выглядит как дублирование кода. Хорошо, если вы посмотрите на делегатов в структуре, таких как UITableViewDelegate
, UITextFieldDelegate
, большинство из них, если не все, примут вещь, делегатом которой они являются, в качестве первого параметра. Все методы в UITableViewDelegate
имеют параметр tableView
. Поэтому было бы хорошо, если бы вы следовали шаблону:
protocol CellDelegate {
func didTapButton1(_ cell: Cell)
func didTapButton2(_ cell: Cell)
func didTapButton3(_ cell: Cell)
}
Лично я бы написал в этом делегате только один метод:
protocol CellDelegate {
func didTapButton(_ cell: Cell, buttonNumber: Int)
}
В расширении VC:Вы просто проверяете buttonNumber
, чтобы увидеть, какая кнопка нажата:
switch buttonNumber {
case 1: button1Tapped()
case 2: button2Tapped()
case 3: button3Tapped()
default: fatalError()
}
// ...
func button1Tapped() { ... }
func button2Tapped() { ... }
func button3Tapped() { ... }