2016-07-28 15 views
12

Ich erhalte die folgenden FehlerProblem Einstellung CABasicAnimation Delegate in Swift 3?

Wert kann nicht vom Typ zuzuweisen ‚StarButton‘ eingeben ‚CAAnimationDelegate?‘

in der letzten Zeile dieses CABasicAnimation Block:

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 ist eine benutzerdefinierte UIButton Klasse. In früheren Versionen von Swift war das kein Problem ... irgendwelche Vorschläge zu einer Lösung?

UPDATE

Hier ist eine herunterladbare Link auf die Quelldatei für die StarButton Klasse für beste Referenz:

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

+0

Sind Sie sicher, dass es dem Delegate-Protokoll entspricht? – Fogmeister

+0

'UIButton' aus den Apple-Dokumenten (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/) stimmt nicht mit' CAAnimationDelegate' überein. Haben Sie explizit gesagt, dass Ihre Unterklasse ein Delegierter war? Siehe http://stackoverflow.com/questions/24024466/how-do-i-make-a-class-conform-to-a-delegate-in-swift – Doc

+0

@ Fogmeister Nun, das ist Teil einer Open-Source-Komponente, die ich packte & nach der Untersuchung der Datei scheint es keine Protokolle zu haben .. aber das funktionierte einwandfrei in Swift 2.xx –

Antwort

10

Wie @Doc in den Kommentaren oben erwähnt, ist die Lösung zu ersetzen

class StarButton: UIButton { 

mit

Es scheint, dass das CAAnimationDelegate-Protokoll nicht länger implizit ist und explizit angegeben werden muss.