【问题标题】:Toggling UIbuttons in an array to select / deselect在数组中切换 UIbuttons 以选择/取消选择
【发布时间】:2019-08-21 23:37:54
【问题描述】:

我有一组 5 个不同的按钮插座。当按下任何按钮时,应首先选择该按钮,然后应取消选择数组中的所有其他按钮。

这是我目前的进展:

func toggleButton(select:UIButton) {
    select.isSelected = true

    let buttons = [button1, button2, button3, button4, button5]

    for button in buttons as! [UIButton] {
        if button.isSelected == true{
            button.isSelected = true
        } else {
            button.isSelected = false
        }
    }
}

我首先选择按钮(使用select.isSelected = true),然后遍历按钮数组以确定它是否被选中。如果它没有被选中(意味着它没有被按下),那么它应该将 isSelected 更改为 false。

问题是每个被按下的按钮都会变为选中状态,然后在按下其他按钮后保持选中状态。

如何设置切换按钮,以便首先选择点击的按钮,然后取消选择所有其他按钮(除了选定的按钮)? 注意:按此顺序很重要,因为运行的动画。

【问题讨论】:

  • func toggleButton 不是selector 函数,当你的按钮被点击时,你是如何调用处理程序的?
  • @LeoDabus 我的问题的最后一部分指出顺序必须从 first 将选定按钮设置为 true 并 然后 取消选择所有未选定.不是相反。
  • @Joe 是的,我刚看到动画部分

标签: arrays swift for-loop uibutton selected


【解决方案1】:

如果按钮的实例与select 相同,则可以使用!== 运算符跳过该按钮,并且有多种方法

1) 在 for-in 循环内

func toggleButton (select: UIButton) {
    select.isSelected = true

    let buttons: [UIButton] = [button1, button2, button3, button4, button5]
    for button in buttons {
        if button.isSelected && button !== select {
            button.isSelected = false
        }
    }
}

2) 过滤数组中所需的按钮

func toggleButton (select: UIButton) {
    select.isSelected = true
    let buttons: [UIButton] = [button1, button2, button3, button4, button5]
    buttons.filter({ $0.isSelected && $0 !== select }).forEach { $0.isSelected = false }
}

【讨论】:

  • 您还可以在 for 循环中添加 where 子句 for button in buttons where button.isSelected && button !== select { button.isSelected = false }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
相关资源
最近更新 更多