2016-07-28 5 views
12

Я получаю следующее сообщение об ошибкеНастройка проблемы CABasicAnimation делегат в Swift 3?

Невозможно присвоить значение типа «StarButton» к типу ' CAAnimationDelegate?

на последней строке этого CABasicAnimation блока:

let fillCircle = CABasicAnimation(keyPath: "opacity") 
fillCircle.toValue = 0 
fillCircle.duration = 0.3 
fillCircle.setValue(notFavoriteKey, forKey: starKey) 
fillCircle.delegate = self // this is where the error is thrown 

self обычай UIButton класс. Это не проблема в предыдущих версиях Swift ... любые предложения по решению?

UPDATE

Здесь загружаемая ссылка на исходный файл для класса StarButton для лучшей ссылки:

https://www.dropbox.com/s/gvc2sky05f4p3au/StarButton.swift?dl=0

+0

Вы уверены, что соответствует протоколу делегата? – Fogmeister

+0

'UIButton' из Apple Docs (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/) не соответствует' CAAnimationDelegate'. Вы явно сказали, что ваш подкласс был делегатом? См. Http://stackoverflow.com/questions/24024466/how-do-i-make-a-class-conform-to-a-delegate-in-swift – Doc

+0

@Fogmeister хорошо, это часть компонента с открытым исходным кодом, который я захватил & после изучения файла у него нет никаких протоколов .. однако это отлично работало в swift 2.xx –

ответ

10

Как @Doc упоминалось в приведенных выше замечаний, решение является заменить

class StarButton: UIButton { 

с

class StarButton: UIButton, CAAnimationDelegate { 

Казалось бы, протокол CAAnimationDelegate больше не подразумевается и должен быть указан явно.