Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在#选择器中添加默认参数值_Ios_Swift_Function_Addtarget - Fatal编程技术网

Ios 如何在#选择器中添加默认参数值

Ios 如何在#选择器中添加默认参数值,ios,swift,function,addtarget,Ios,Swift,Function,Addtarget,我有一个功能: func handleChange(isShown:Bool){ if isShown { // do something A }else{ // do something B } } func handleChange(sender: UISlider) { // logic based on the action or slider doSomething(i

我有一个功能:

func handleChange(isShown:Bool){
        if isShown {
           // do something A
        }else{
           // do something B
        }
    }
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
}
如果我想让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?非常感谢您的回复。

一个解决方案是使用一个与
选择器
功能分开的助手功能。选择器函数可以调用helper函数,该函数可以包含任意多个参数

添加目标:

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

func handleChange(isShown:Bool){
        if isShown {
           // do something A
        }else{
           // do something B
        }
    }
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
}
辅助功能:

func handleChange(isShown:Bool){
        if isShown {
           // do something A
        }else{
           // do something B
        }
    }
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
}

你不能。没有参数,或者参数必须是
UISlider
实例。带参数的语法必须是
handleChange(\usender:UISlider)
您不能这样做。您只能传递
发送方
,在本例中,它是一个
UISlider
。您的“正确代码”不是。请参阅我编辑的第一条评论。@vadian、@dfd、@Jaydeep谢谢,我将进一步了解“addTarget”,谢谢您的回复