Если у вас есть ограниченные возможные случаи, у меня будет одно закрытие, которое принимает в качестве аргумента перечисление и будет иметь регистр переключения, чтобы решить, какой метод вызвать
Если каждое событие имеет значение, связанное с ним, вытакже может использовать перечисления со связанными значениями :)
Пример:
enum EventType {
case toA
case toB
case toC
}
Объявить ваше закрытие как
var routerBlock: ((EventType) -> ())? = nil
Наконец, блок маршрутизатора реализован как
tableView?.routerBlock = {[weak self] (eventType) in
switch eventType {
case .toA:
self?.gotoA()
case .toB:
self?.goToB()
case .toC:
self?.goToC()
}
}
Вы можете использовать аналогичный подход и с делегатами.Вместо того, чтобы иметь 3 метода делегата, вы можете иметь один метод, который принимает EventType
и иметь тот же блок переключателей, чтобы решить, какой метод вызвать
Надеюсь, это поможет