【问题标题】:How can I create a function for multiple labels in a stack?如何为堆栈中的多个标签创建函数?
【发布时间】:2018-05-30 11:42:00
【问题描述】:

我有 3 个标签,我想为每个标签生成随机数。我在函数中使用 GKRandomSource 类,没关系。问题是,如果我想拥有更多标签(即 30 个)并且所有标签都具有相同的操作,我需要将所有标签一一引用到 IBAction,我需要在 func 代码中一一声明所有标签......我'一直在寻找更短的方法,也许将它们全部放在 3 个堆栈中(每个堆栈 10 个标签)并触发,但我什么也没得到。我尝试了 outlet 集合(就像我们在 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])
}

【问题讨论】:

    标签: swift uilabel xcode9


    【解决方案1】:

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

    例如:

      @IBOutlet var formLabels: [UILabel]!
    

    并且可以这样做:

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

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

    【讨论】:

    • 当我尝试将插座放入阵列时,之前的连接会中断。也许我做错了什么?
    • 你在做什么,首先你需要在你的 viewController 中输入那一行,然后将 outlet 连接到它。
    • 我也是这样做的,我可以连接第一个插座,当我连接第二个插座时,我意识到第一个连接消失了@sanjaykmwt
    • 我的做法相同,但方法错误 :) 谢谢你的 GIF,也谢谢你的帮助。 hgd @sanjaykmwt
    • 希望对兄弟有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    相关资源
    最近更新 更多