Swift Closure – Cannot convert value of type (_) -> ()? to expected argument type (() -> ())?
我在 Xcode 9、Swift 4 中使用 SideMenuController pod。试图让侧面板动画正常工作。无法弄清楚为什么它会抛出这个错误。如果您能提供帮助,请提前致谢!
1
2 3 4 5 6 7 8 9 |
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) } |
这是该函数的定义:
1
|
class func panelAnimation(_ duration : TimeInterval, animations : @escaping (()->()), completion : (()->())? = nil)
|
如您所见,您不需要在完成闭包开始时使用 _ in 关键字。
改写如下:
1
2 3 4 5 6 7 8 9 |
UIView.panelAnimation( duration, animations: {
self.centerPanel.frame = centerPanelFrame self.set(statusUnderlayAlpha: hidden ? 0 : 1) }) { if hidden { self.setSideShadow(hidden: hidden) } completion?(updated) } |
来源:https://www.codenong.com/46424290/