我目前在viewcontroller.swift
上有三个单独的滑块,我希望所有滑块都执行相同的功能,即将滑块值四舍五入到最近的位置。我已经完成了第一个,因此:
@IBAction func changePos(_ sender: UISlider) {
slider.value = roundf(slider.value)
}
我尝试了许多不同的方法,使用slider2, changePos2, etc
向不同的UISliders添加相同的功能,但我的应用程序崩溃或不执行该功能。
如何让单独的UISliders在同一个viewcontroller中执行相同的功能?
答案 0 :(得分:1)
您可以将所有3个滑块连接到同一个@IBAction
。只需在实现中使用sender
参数代替slider
输出。
@IBAction func changePos(_ sender: UISlider) {
sender.value = sender.value.rounded()
}
答案 1 :(得分:0)
这样做的好方法是使用如下的IBOutletCollections。
@IBOutlet var sliders: [UISlider]!
然后在下面使用漂亮的快速语法:
sliders.forEach { (slider) in
slider.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)
}
这样你就可以为每个滑块调用相同的选择器。