有人向我指出,有一种更好的方法来编写这段代码,而不是使用本地闭包。我该怎么做?单击时切换图像。

@IBAction func btnMuteMicPressed(_ sender: Any) {
    publisher.publishAudio.toggle()

    let buttonImage: UIImage  = {
        if !publisher.publishAudio {
            return #imageLiteral(resourceName: "group3-1")
        } else {
            return #imageLiteral(resourceName: "group3")
        }
    }()

    btnMuteMic.setImage(buttonImage, for: .normal)
}

最佳答案

这可以缩短为,

@IBAction func btnMuteMicPressed(_ sender: Any) {
    publisher.publishAudio.toggle()
    let buttonImage = !publisher.publishAudio ? #imageLiteral(resourceName: "group3-1") : #imageLiteral(resourceName: "group3")
    btnMuteMic.setImage(buttonImage, for: .normal)
}

我认为这里不需要closure来获取buttonImage。这绝对不意味着你的代码是错误的。

关于swift - 使用本地闭包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56807712/

10-09 10:17