Как я могу создать функцию для нескольких меток в стеке? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть 3 метки, и я хочу сгенерировать случайные числа для каждой из них.Я использую класс GKRandomSource в функции, это нормально.Проблема в том, что если я хочу иметь гораздо больше меток (т.е. 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])
}

1 Ответ

0 голосов
/ 30 мая 2018

вы можете создать массив UILabel и поместить все выходы в один и тот же массив, а затем использовать цикл for для выполнения операций над каждым из них.

, например:

  @IBOutlet var formLabels: [UILabel]!

и может сделать так:

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

посмотреть, как он работает после добавления обеих розеток. Я также показал соединение в раскадровке, соединение существует

enter image description here

...