UISlider添加目标操作不起作用

时间:2017-03-11 19:54:33

标签: 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")
}

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

以下是我的控制台的屏幕截图:consoleLog

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

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

windSpeedSlider.addTarget(self, action:#selector(sliderValueDidChange(sender:)), for: .valueChanged)

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

答案 1 :(得分:0)

您的addTarget应该是:

windSpeedSlider.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)

检查出来:

Check it out