在运行时从字符串访问代码中的UILabel

时间:2018-08-21 18:41:09

标签: ios swift

我的故事板上有5个标签,带有5个数字(1-5)。我有一个随机数发生器。现在,生成的数字应将背景变成灰色,将文本变成白色。 我的标签定义如下:

    @IBOutlet weak var num1: UILabel!
    @IBOutlet weak var num2: UILabel!
    @IBOutlet weak var num3: UILabel!
    @IBOutlet weak var num4: UILabel!
    @IBOutlet weak var num5: UILabel!

例如,现在随机数生成器给出数字1,我​​想选择标签1。 这样我就可以像这样制作所需的字符串:

let labelName = "num" + Str(randomlyGeneratedNumber)

但是正如您所看到的,它是一个字符串,我无法将其设为UILabel来访问文本和其他属性。

我检查了StackOverflow中的文档和各种文章,但是所有解决方案都将使用UILabel进行操作,而不是像我想要的方式那样访问UILabel。

任何帮助将不胜感激。 谢谢。

2 个答案:

答案 0 :(得分:0)

变量名是在编译时求值的,您不能在运行时编写动态变量名

将标签声明为插座集合

@IBOutlet var labels: [UILabel]!

并按所需顺序在Interface Builder中连接标签

现在您可以按索引获取标签,请考虑Swift中的索引从零开始。

let label = labels[randomlyGeneratedNumber - 1]

答案 1 :(得分:0)

将标签设置为UILabel。

num1.tag = 1
num2.tag = 2
num3.tag = 3
num4.tag = 4
num5.tag = 5

您还可以在创建标签时在.xib文件中设置标签。

然后,您可以根据生成的随机数获取标签。

let label = self.view.viewWithTag(randomlyGeneratedNumber) as! UILabel