微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在单个@IBAction 中获取多个 UISlider 的值?

如何解决如何在单个@IBAction 中获取多个 UISlider 的值?

我有 5 个滑块引用了相同的 @IBAction func sliderDidSlide()。每个 UiSlider 都有一个标签 0...4。如何获得每个单独滑块的值?我想使用 sender.tag 来获取哪个滑块,然后使用 .value 来获取它的值。我试过 sender.tag.value,但没有用。

下面是我想做但不起作用的事情。我试过搜索,但找不到解决方案。我知道我可以有多个@IBActions,但如果可能的话,我想保存代码并使用标签将它们全部放在同一个@IBAction 中。任何帮助将不胜感激。谢谢。

esp_bt_sp_param_t param_type = ESP_BT_SP_IOCAP_MODE;
esp_bt_io_cap_t iocap = ESP_BT_IO_CAP_IO;
esp_bt_gap_set_security_param(param_type,&iocap,sizeof(uint8_t));

//seting pin code
esp_bt_pin_type_t pin_type = ESP_BT_PIN_TYPE_VARIABLE;
esp_bt_pin_code_t pin_code;

pin_code[0] = '1';
pin_code[0] = '2';
pin_code[0] = '3';
pin_code[0] = '4';
esp_bt_gap_set_pin(pin_type,4,pin_code);

解决方法

sliderDidSlide 将在滑块值之一发生变化时被调用。在每个调用中,相应的 UISlider 将被传递到 sender 参数标签中。

您已经通过 switch sender.tag { 区分了滑块。 sender.tag.value 没有意义,也不会编译,因为 tag 没有名为 value 的属性。

切换标签后,您可以直接访问sender.value

let price = maxPrice * sender.value /// directly access value

switch sender.tag {
case 0:
    label1.text = "\(price)"
case 1:
    label2.text = "\(price)
case 2:
    label3.text = "\(price)
case 3:
    label4.text = "\(price)
case 4:
    label5.text = "\(price)
default:
    break
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。