UISlider 添加目标操作不起作用

0 swift swift-playground

我无法以编程方式通过 swift 创建 UISlider。错误是说我的选择器无法识别。我曾尝试使用“#selector(function)”的形式,但它也不起作用。这是我的代码:

let windTurbineView = SKView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 325, height: 600)))
let windSpeedSlider = UISlider(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 280, height: 18)))

func windSpeedSliderSetUp() {
    windSpeedSlider.minimumValue = 0.0
    windSpeedSlider.maximumValue = 20.0
    windSpeedSlider.isContinuous = true
    windSpeedSlider.tintColor = .blue
    windSpeedSlider.minimumValueImage = UIImage(named: "0MPH.png")
     windSpeedSlider.maximumValueImage = UIImage(named: "20MPH.png")
    windSpeedSlider.value = 0
    windTurbineView.addSubview(windSpeedSlider)
    windSpeedSlider.center.x = windTurbineView.center.x
    windSpeedSlider.center.y = 585
    windSpeedSlider.addTarget(windSpeedSlider, action: Selector(("sliderValueDidChange")), for: .valueChanged)
}

 func sliderValueDidChange(sender: UISlider) {

    mphLabel.text = "\(sender.value)"
    print("wi")
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 swift playground 并导入了以下内容:UIKit、PlaygroundSupport 和 SpriteKit。

这也是我的控制台的屏幕截图: 控制台日志

任何帮助表示赞赏。

ton*_*ter 5

问题是该方法sliderValueDidChange()是在视图控制器中定义的,但 的目标windSpeedSlider设置为windSpeedSlider本身。相反,您应该将目标设置为self(即视图控制器):

windSpeedSlider.addTarget(self, action:#selector(sliderValueDidChange(sender:)), for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)

目标是消息/选择器发送到的对象。