【问题标题】:How to add a default parameter value in the #selector [duplicate]如何在#selector中添加默认参数值[重复]
【发布时间】:2017-08-18 15:57:45
【问题描述】:

我有一个函数:

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?感谢您能回复。

【问题讨论】:

  • 你不能。要么没有参数,要么参数必须是UISlider 实例。带参数的语法必须是handleChange(_ sender: UISlider)
  • 你不能。您只能传递sender,在本例中为UISlider。你的“正确代码”不是。
  • 查看我编辑的第一条评论。
  • @vadian,@dfd,@Jaydeep 谢谢,我会去进一步了解'addTarget'

标签: ios swift function addtarget


【解决方案1】:

一种解决方案是使用独立于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
}

【讨论】:

  • 感谢您的回复
猜你喜欢
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2013-09-29
相关资源
最近更新 更多