【问题标题】:Swift Closure - Cannot convert value of type (_) -> ()? to expected argument type (() -> ())?Swift Closure - 无法转换类型 (_) -> () 的值?到预期的参数类型(()->())?
【发布时间】:2017-09-26 10:43:33
【问题描述】:

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

【问题讨论】:

    标签: swift animation closures


    【解决方案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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多