Я пытаюсь создать протокол, который будет реализован определенными классами, все они также должны реализовать UIScrollViewDelegate
. Я думал о том, что для моего нового протокола используется протокол UIScrollViewDelegate
.По умолчанию реализация протокола протокола
protocol MyProtocol: UIScrollViewDelegate {
var myVar: NSString { get }
func myMethod()
}
Поскольку протокол должен иметь свою реализацию по умолчанию, я также создал расширение для этого протокола.
extension MyProtocol {
func myMethod() {
print("I'm printing")
}
func scrollViewDidScroll(scrollView: UIScrollView) {
print("I'm scrollin")
}
}
Он компилируется, но не работает. Что я делаю неправильно и что будет правильным способом создать стандартную реализацию расширенного протокола?
Я думаю, что вы на правильном пути. Я предполагаю, что вам нужно переопределить сеттер для делегата в вашем протоколе и вызвать super.delegate = theDelegate –
Что значит «это не работает». Что происходит? Это не приемлемое описание проблемы. – nhgrif
На первый взгляд вы на правильном пути, но с Swift 2.2 методы делегата, определенные в расширениях протокола, не «найдены» из кода Objective-C. Вам необходимо расширить класс, который соответствует 'UIScrollViewDelegate', который определяет метод расширения' scrollViewDidScroll' в конкретном классе 'MyScrollViewDelegate' или' MyScrollViewViewController'. – CouchDeveloper