设置多个变量的值
Set the value of multiple variables
在 UIStackView 中,我有四个标签对应于四个 IBOutlet
变量,名称为 lbl_0
、lbl_1
、lbl_2
、lbl_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 = ""
还有其他方法可以设置这些标签的值吗?
您可以为每个标签分配一个标签,然后使用 UIView
的 viewWithTag
从 UIStackView
.
中提取标签
@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) = ("", "", "", "")
短了一点,但我猜不是你所希望的:-)
在 UIStackView 中,我有四个标签对应于四个 IBOutlet
变量,名称为 lbl_0
、lbl_1
、lbl_2
、lbl_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 = ""
还有其他方法可以设置这些标签的值吗?
您可以为每个标签分配一个标签,然后使用 UIView
的 viewWithTag
从 UIStackView
.
@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) = ("", "", "", "")
短了一点,但我猜不是你所希望的:-)