设置多个变量的值

时间:2016-04-05 08:31:53

标签: swift label

在UIStackView中,我有四个标签,对应于名为IBOutletlbl_0lbl_1lbl_2的四个lbl_3变量。

有时,我需要将其值设置为空字符串。我以为我可以像以下那样做一些“华而不实”的事情:

// inside a loop body
cell["lbl_"+i].text = ""

但似乎我不能(“没有下标成员”错误)。

所以,除了以这种方式设置值:

cell.lbl_0.text = ""
cell.lbl_1.text = ""
cell.lbl_2.text = ""
cell.lbl_3.text = ""

有没有其他方法可以设置这些标签的值?

3 个答案:

答案 0 :(得分:2)

<强> @IBOutletCollection

您可以将每个标签连接到同一个Outlet Collection。 要实现此目的,请将第一个标签拖放到translations,然后在弹出框对话框中将Connection to Outlet Collection和Name设置为UIViewController。这将创建一个数组,您可以在其中添加其他标签。

最后:

labelCollection

UILabel子视图

警告:这将访问指定视图中的所有标签。

for label in labelCollection {
    label.text = ""
}

答案 1 :(得分:1)

我最初的想法是,也许你可以做类似

的事情
cell.lbl_0.text = cell.lbl_1.text = cell.lbl_2.text = cell.lbl_3.text = ""

但是,正如this fine answer

中所述
  

你没有。这是一种语言功能,可以防止赋值的标准不需要的副作用返回值

所以...它似乎不是这样,不是没有使用Outlet Collection,至少@laffen建议。

但正如@ matt-gibson在我正在链接的答案中建议的那样,你可以像这样使用元组:

(cell.lbl_0.text, cell.lbl_1.text, cell.lbl_2.text, cell.lbl_3.text) = ("", "", "", "")

这有点短,但不是你想要的东西: - )

答案 2 :(得分:0)

您可以为每个标签指定一个标签,然后使用UIView的{​​{1}}从viewWithTag中提取标签。