在 Xcode 上创建副本 outlets/actions
Creating duplicate outlets/actions on Xcode
目前我的 viewcontroller.swift
上有三个单独的滑块,我希望它们都执行相同的功能,即将滑块值四舍五入到最近的位置。我已经完成了第一个,因此:
@IBAction func changePos(_ sender: UISlider) {
slider.value = roundf(slider.value)
}
我已经尝试了很多不同的方法来通过 slider2, changePos2, etc
将相同的功能添加到不同的 UISliders,但是我的应用要么崩溃要么不执行该功能。
如何让不同的 UISlider 在同一个 viewcontroller 中执行相同的功能?
执行此操作的好方法是使用如下所示的 IBOutletCollections。
@IBOutlet var sliders: [UISlider]!
然后使用下面漂亮的 swift 语法:
sliders.forEach { (slider) in
slider.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)
}
这样您就可以为每个滑块调用相同的选择器。
您可以将所有 3 个滑块连接到同一个 @IBAction
。只需在实现中使用 sender
参数而不是 slider
输出。
@IBAction func changePos(_ sender: UISlider) {
sender.value = sender.value.rounded()
}
目前我的 viewcontroller.swift
上有三个单独的滑块,我希望它们都执行相同的功能,即将滑块值四舍五入到最近的位置。我已经完成了第一个,因此:
@IBAction func changePos(_ sender: UISlider) {
slider.value = roundf(slider.value)
}
我已经尝试了很多不同的方法来通过 slider2, changePos2, etc
将相同的功能添加到不同的 UISliders,但是我的应用要么崩溃要么不执行该功能。
如何让不同的 UISlider 在同一个 viewcontroller 中执行相同的功能?
执行此操作的好方法是使用如下所示的 IBOutletCollections。
@IBOutlet var sliders: [UISlider]!
然后使用下面漂亮的 swift 语法:
sliders.forEach { (slider) in
slider.addTarget(self, action: #selector(sliderValueDidChange(sender:)), for: .valueChanged)
}
这样您就可以为每个滑块调用相同的选择器。
您可以将所有 3 个滑块连接到同一个 @IBAction
。只需在实现中使用 sender
参数而不是 slider
输出。
@IBAction func changePos(_ sender: UISlider) {
sender.value = sender.value.rounded()
}