2016-07-28 85 views
12

我收到以下錯誤問題在Swift 3中設置CABasicAnimation委託?

無法分配型「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

Apple Docs中的'UIButton'(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這是我抓取的一個開源組件的一部分&檢查完文件後,它似乎沒有任何協議..但是,這工作得很好2.xx –

回答

10

如上註釋提到@doc,解決的辦法是替換

class StarButton: UIButton { 

class StarButton: UIButton, CAAnimationDelegate { 

似乎CAAnimationDelegate協議不再隱含,必須明確指定。