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

How can I create a function for multiple labels in a stack?

我有 3 个标签,我想为每个标签生成随机数。我在函数中使用 GKRandomSource class,没关系。问题是,如果我想要更多的标签(即 30 个)并且都具有相同的操作,我需要将所有标签一一引用到 IBAction,我需要在函数代码中一一说明所有标签……我'我一直在寻找更短的方法,也许将它们全部放在 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])
}

你可以创建 UILabel 的数组并将所有的 outlet 放在同一个数组中,然后你可以使用 for 循环对它们中的每一个进行操作。

例如:

  @IBOutlet var formLabels: [UILabel]!

并且可以这样做:

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

在添加两个出口后看到它的工作我还在情节提要中显示了连接存在连接