在Xcode上创建重复的出口/操作

时间:2017-10-08 17:41:00

标签: ios swift xcode uislider ibaction

我目前在viewcontroller.swift上有三个单独的滑块,我希望所有滑块都执行相同的功能,即将滑块值四舍五入到最近的位置。我已经完成了第一个,因此:

@IBAction func changePos(_ sender: UISlider) {
    slider.value = roundf(slider.value)
}

我尝试了许多不同的方法,使用slider2, changePos2, etc向不同的UISliders添加相同的功能,但我的应用程序崩溃或不执行该功能。

如何让单独的UISliders在同一个viewcontroller中执行相同的功能?

2 个答案:

答案 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)
        }

这样你就可以为每个滑块调用相同的选择器。