2

我有一个功能:

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

如果我希望 UISlider 添加上述操作,并且isShown默认为false,我将在另一个函数中调用handleChange(isShown:Bool)带有true的方法。错误代码如下:

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

而且我知道正确的代码必须是:

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

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

4

1 回答 1

2

一种解决方案是使用与函数分离的辅助selector函数。选择器函数可以调用辅助函数,它可以有任意多的参数。

添加目标:

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
}
于 2017-08-18T16:05:42.710 回答