如何在#selector 中添加默认参数值

How to add a default parameter value in the #selector

我有一个功能:

func handleChange(isShown:Bool){
        if isShown {
           // do something A
        }else{
           // do something B
        }
    }

如果我想让 UISlider 添加上面的动作,isShown 默认为 false,然后我将在另一个函数中用 true 调用方法 handleChange(isShown:Bool)。 错误代码如下:

slider.addTarget(self, action: #selector(handleValue(isShown:false)), for: .valueChanged) 

我知道正确的代码应该是:

slider.addTarget(self, action: #selector(handleValue(isShown:)), for: .valueChanged) 

我只想知道如何在 swift 中将 'isShown' 设置为 false?感谢您的回复。

一种解决方案是使用与 selector 函数分开的辅助函数。 selector 函数可以调用helper 函数,helper 函数可以有任意多个参数。

添加目标:

slider.addTarget(self, action: #selector(handleChange(_ sender: UISlider)), for: .valueChanged)

目标函数:

func handleChange(sender: UISlider) {
    // logic based on the action or slider
    doSomething(isShown: true)
}

辅助函数:

func doSomething(isShown: Bool) {
    // make your changes using the parameters here
}