如何为堆栈中的多个标签创建函数?

时间:2018-05-30 11:42:00

标签: swift uilabel xcode9

我有3个标签,我想为每个标签生成随机数。我在函数中使用GKRandomSource类,没关系。问题是,如果我想拥有更多标签(即30)并且所有标签都具有相同的动作,我需要逐个引用所有标签到IBAction,我需要在func代码中逐个声明所有标签......我一直在寻找一个更短的方式,也许把它们全部放在3个堆栈(每个堆栈10个标签)和触发器,但我什么也没得到。我尝试了出口集合(我们在UIButtons中使用),但它不允许我更改标签文本。

如何在没有重复的情况下为多个标签使用函数?

实施例

let allNumbers = [Int](1...99)
var shuffledNum = [Int]()

@IBOutlet weak var labelOne: UILabel!
@IBOutlet weak var labelTwo: UILabel!
@IBOutlet weak var labelThree: UILabel!

func generateNumbers() {
    shuffledNum = GKRandomSource.sharedRandom().arrayByShufflingObjects(in: allNumbers) as! [Int]

    let threeNumbers = shuffledNum.prefix(3).sorted()

    labelOne.text = String(threeNumbers[0])
    labelTwo.text = String(threeNumbers[1])
    labelThree.text = String(threeNumbers[2])
}

1 个答案:

答案 0 :(得分:1)

你可以制作UILabel的数组并将所有的出口放在同一个数组中,然后你就可以使用for循环来对它们进行操作。

例如:

  @IBOutlet var formLabels: [UILabel]!

可以这样做:

  formLabels.forEach { label in
  label.text = ""//put your random number function here
}

在添加两个插座后看到它的工作情况我还在故事板中显示了连接存在的连接

enter image description here

相关问题