Swift Closure - 无法转换类型(_)的值 - > ()?预期的参数类型(() - >())?

时间:2017-09-26 10:43:34

标签: swift animation closures

我在Xcode 9,Swift 4中使用SideMenuController pod。尝试让侧面板动画正常工作。无法解决为什么抛出这个错误。如果您能提供帮助,请提前致谢!

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 个答案:

答案 0 :(得分:1)

这是该功能的定义:

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)
}