在UIStackView中,我有四个标签,对应于名为IBOutlet
,lbl_0
,lbl_1
,lbl_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 = ""
有没有其他方法可以设置这些标签的值?
答案 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
中提取标签。