我无法通过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。
以下是我的控制台的屏幕截图:
感谢任何帮助。
答案 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)
检查出来: