设置多个变量的值

Set the value of multiple variables

在 UIStackView 中,我有四个标签对应于四个 IBOutlet 变量,名称为 lbl_0lbl_1lbl_2lbl_3

有时,我需要将它们的值设置为空字符串。我想我可以像下面这样 "flashy" 做一些事情:

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

但我好像做不到("no subscript members" 错误)。

因此,除了以这种方式设置值之外:

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

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

您可以为每个标签分配一个标签,然后使用 UIViewviewWithTagUIStackView.

中提取标签

@IBOutletCollection

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

最后:

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

UILabel 子视图

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

for label: UILabel in self.view.subviews.filter({ [=11=] as? UILabel }) {
    label.text = ""
}

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

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

但是,正如 this fine answer

中所说

You don't. This is a language feature to prevent the standard unwanted side-effect of assignment returning a value

所以...看起来并非如此,至少正如@laffen 所建议的那样,并非没有使用 Outlet Collection

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

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

短了一点,但我猜不是你所希望的:-)