动画委托未转换为 Swift 3.0
Posted
技术标签:
【中文标题】动画委托未转换为 Swift 3.0【英文标题】:Animation Delegate not converting to Swift 3.0 【发布时间】:2017-02-05 19:14:13 【问题描述】:我想实现 CABasicAnimation 并在动画完成时通知 UIViewController。来自此资源:
http://www.informit.com/articles/article.aspx?p=1168314&seqNum=2
我知道我可以将 viewcontroller 指定为动画的委托,并在 viewcontroller 中覆盖 animationDidStop
method。但是,当我将以下代码行转换为 Swift 时:
[animation setDelegate:self];
像这样:
animation.delegate = self //没有setDelegate方法
XCode 抱怨:
Cannot assign value of type 'SplashScreenViewController' to type 'CAAnimationDelegate?'
我做错了什么?我错过了什么吗?
【问题讨论】:
【参考方案1】:您需要确保您的 viewController 符合 CAAnimationDelegate。
class SplashScreenViewController: UIViewController, CAAnimationDelegate
// your code, viewDidLoad and what not
override func viewDidLoad()
super.viewDidLoad()
let animation = CABasicAnimation()
animation.delegate = self
// setup your animation
// MARK: - CAAnimation Delegate Methods
func animationDidStart(_ anim: CAAnimation)
func animationDidStop(_ anim: CAAnimation, finished flag: Bool)
// Add any other CAAnimationDelegate Methods you want
您也可以通过使用扩展来符合委托:
extension SplasScreenViewController: CAAnimationDelegate
func animationDidStart(_ anim: CAAnimation)
func animationDidStop(_ anim: CAAnimation, finished flag: Bool)
【讨论】:
以上是关于动画委托未转换为 Swift 3.0的主要内容,如果未能解决你的问题,请参考以下文章
swift 1.2 / xcode 6.3 更新后未调用获取的结果控制器委托
而委托为 nil 或未实现外围设备:didDiscoverCharacteristicsForService:error: (Corebluetooth, Swift)
使用 iOS 和 Swift 3 在委托方法中未接收到 xmpp 存在
当广告加载失败时在 Swift 中隐藏 iAd ADBannerView - 没有委托或委托未实现 didFailToReceiveAdWithError