如何在 table 视图 cellForRow 委托方法中隐藏堆栈视图中的视图
How to hide a view from a stack view in table view cellForRow delegate method
如果我的数据模型中的某个 属性 是 nil
,我想知道从堆栈视图中删除视图的最简洁方法是什么。我有一个由原型单元填充的 table 视图。它们看起来像这样:
第二个标签文本包含一个可选值,可以是nil
;如果标签为零,我想隐藏它。我应该在 cellForRow
table 视图单元格方法中调用 removeArrangedSubview
还是在 CustomTableViewCell
class 中调用函数?
I want to hide the label if [optional value] is nil
您应该将标签的 hidden
属性 设置为 true
而不是将其从堆栈布局的排列子视图列表中删除,以避免在单元格被重复使用时将其添加回来不同的行。
这主要取决于您在哪里操作。如果您的大部分单元格设置代码都在 cellForRow
函数中,您也应该隐藏和取消隐藏该函数中的标签:
if let labelText = model.getTextForMyLabel(indexPath.row) {
cell.label.text = labelText
cell.label.hidden = false
} else {
cell.label.hidden = true
}
如果您的 CustomTableViewCell
代码中的标签文本有 setter,您可以使用相同的方法设置标签的 hidden
属性 以及它的 text
.
如果我的数据模型中的某个 属性 是 nil
,我想知道从堆栈视图中删除视图的最简洁方法是什么。我有一个由原型单元填充的 table 视图。它们看起来像这样:
第二个标签文本包含一个可选值,可以是nil
;如果标签为零,我想隐藏它。我应该在 cellForRow
table 视图单元格方法中调用 removeArrangedSubview
还是在 CustomTableViewCell
class 中调用函数?
I want to hide the label if [optional value] is
nil
您应该将标签的 hidden
属性 设置为 true
而不是将其从堆栈布局的排列子视图列表中删除,以避免在单元格被重复使用时将其添加回来不同的行。
这主要取决于您在哪里操作。如果您的大部分单元格设置代码都在 cellForRow
函数中,您也应该隐藏和取消隐藏该函数中的标签:
if let labelText = model.getTextForMyLabel(indexPath.row) {
cell.label.text = labelText
cell.label.hidden = false
} else {
cell.label.hidden = true
}
如果您的 CustomTableViewCell
代码中的标签文本有 setter,您可以使用相同的方法设置标签的 hidden
属性 以及它的 text
.