Swift Closure - 无法转换类型(_) - >()的值?预期的参数类型(() - >())?
问题描述:
我在Xcode 9,Swift 4中使用SideMenuController窗格。试图让侧面板动画工作。不能解决为什么它抛出这个错误。如果可以帮助,请提前致谢!Swift Closure - 无法转换类型(_) - >()的值?预期的参数类型(() - >())?
UIView.panelAnimation(duration, animations: {
self.centerPanel.frame = centerPanelFrame
self.set(statusUnderlayAlpha: hidden ? 0 : 1)
}) { _ in // THROWS ERROR - CANNOT CONVERT VALUE OF TYPE (_) ->()? TO EXPECTED ARGUMENT TYPE (() ->())?
if hidden {
self.setSideShadow(hidden: hidden)
}
completion?(updated)
}
答
这是函数的定义:
class func panelAnimation(_ duration : TimeInterval, animations : @escaping (()->()), completion : (()->())? = nil)
因此,大家可以看到,你不需要_ in
关键字在完成关闭开始。
重写如下:
UIView.panelAnimation(duration, animations: {
self.centerPanel.frame = centerPanelFrame
self.set(statusUnderlayAlpha: hidden ? 0 : 1)
}) {
if hidden {
self.setSideShadow(hidden: hidden)
}
completion?(updated)
}