【问题标题】:Swift. Changing multiple UIButtons with IBOutlet迅速。使用 IBOutlet 更改多个 UIButton
【发布时间】:2016-11-27 06:32:43
【问题描述】:

所以,我在一个视图控制器上有 20 个 UI 按钮。我还有 2 个其他按钮,它们将更改这些按钮的不同组的 currentTitle 或背景颜色。 (例如,按下这 2 个按钮中的一个将更改其他 10 个按钮的颜色,而按下另一个按钮将更改其中 15 个按钮的背景。)

我注定要创建 20 个不同的 IBOutlets,例如:

@IBOutlet 弱变量 button1: UIButton!

@IBOutlet weak var button2: UIButton!

@IBOutlet weak var button3: UIButton!

.

.

.

然后不得不再写 25 行:

button1!.setTitleColor(UIColor.redColor(), forState: .Normal()

button2!.setTitleColor(UIColor.redColor(), forState: .Normal()

button3!.setTitleColor(UIColor.redColor(), forState: .Normal()

肯定有更简单的方法来做到这一点?我无法将多个 UI 与 IBOutlet 链接,并且更改按钮的标签也没有多大作用,因为无论如何我仍然需要将这些该死的东西写下来 25 次。

是否可以将这些按钮分组,以便我可以编写一行代码来更改该组中的所有内容?

【问题讨论】:

  • 您可以使用引用插座集合(数组 IBOutlet)而不是单个 IBOutlets
  • 如何一次改变数组中的所有对象? [UIButton] 类型没有 setTitleColor 属性。抱歉,我对此有点陌生。
  • 您需要遍历数组并设置每个按钮的标题颜色。

标签: ios swift uibutton iboutlet


【解决方案1】:

按顺序设置按钮标签,例如 101 到 125,然后单击任何按钮执行此操作

for(UIButton *button in <parent view of buttons>.subviews){
   if(button.tag >= 101 && button.tag <= 125){
      button.setTitleColor(UIColor.redColor(), forState: .Normal()
   }
}

对于斯威夫特

for subview in self.createBugView.subviews {

     if let button = subview as? UIButton {
        // this is a button
       if(button.tag >= 101 && button.tag <= 125){      
             button.setTitleColor(UIColor.red, for: .normal)
            }
        }
     }

【讨论】:

  • 我想在用户按下将颜色变为红色的按钮后执行 .setTitleColor 命令。我将有另一个将这些按钮更改为蓝色的按钮,以及另一个更改这些按钮的背景颜色的按钮。你是说我可以通过将这 3 个按钮放在其他 20 个按钮的“父视图”中然后写出后续代码来完成这些?
  • 无需在其他 20 个按钮的“父视图”上放置 3 个不同的按钮。据我所知,有一个视图包含 20 个带有标签的按钮,其他视图上有 3 个不同的按钮来更改 20 个按钮的颜色。所以只需点击这3个按钮,编写以下代码,它肯定会工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
相关资源
最近更新 更多