У меня очень общий вид, который создается и используется несколькими контроллерами представления с 2 кнопками, одна из которых иногда скрыта в зависимости от потребностей.
Этот вид делегирует нажатие двух кнопок.
protocol TheViewsDelegate: class {
func button1Tapped()
func button2Tapped()
}
Давайте предположим, что ViewControllerA создает это представление и нуждается в обеих кнопках, этот контроллер представления должен будет реализовать обе функции делегата и сделать что-то внутри него.
Теперь предположим, что ViewControllerB создает тот же самый вид, но ему нужна только одна из кнопок. Этот контроллер представления должен по-прежнему реализовывать button2Tapped()
, даже если он никогда не будет вызываться и использоваться.
Есть ли способ справиться с этим красиво? Я думаю, что есть хорошее решение, где мне не нужно реализовывать это button2Tapped()
, если оно мне не нужно.
Я думал о том, чтобы сделать его необязательным, предоставив реализацию по умолчанию, но мне не нравится это решение, мне нравится (и я думаю, что это хорошая практика) компилятор, выдающий мне ошибку, когда метод не реализуется. Кто-то может запрыгнуть в проект и не осознавать, что он / она не реализовал button2Tapped, когда это необходимо реализовать.
Примечание : Это очень простой пример, чтобы проиллюстрировать мой вопрос, но вопрос более широкий: что делать, когда функция в делегате определяется контроллером, который не нуждается в реализовать его.