如何在#selector添加默认参数值
问题描述:
我有一个函数:如何在#selector添加默认参数值
func handleChange(isShown:Bool){
if isShown {
// do something A
}else{
// do something B
}
}
如果我想要一个UISlider到违约增加与被示上述行动假,和我将在另一个函数中调用方法handleChange(isShown:Bool)
和true。 错误的代码如下:
slider.addTarget(self, action: #selector(handleValue(isShown:false)), for: .valueChanged)
而且我知道正确的代码需要:
slider.addTarget(self, action: #selector(handleValue(isShown:)), for: .valueChanged)
我只是想知道我怎么可以把“被示”在迅速假?感谢您的回复。
答
一个解决方案是使用与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
}
+1
感谢您的回复 – Ringo
你不能。要么没有参数,要么参数必须是'UISlider'实例。带参数的语法必须是'handleChange(_ sender:UISlider)' – vadian
您不能。你可以传递的是'sender',在这种情况下是'UISlider'。你的“正确的代码”不是。 – dfd
看到我编辑的第一条评论。 – vadian