我可以将单个自定义单元格用于多个不同的单元格吗?

Posted

技术标签:

【中文标题】我可以将单个自定义单元格用于多个不同的单元格吗?【英文标题】:Can I use a single custom cell for multiple different cells? 【发布时间】:2017-12-14 21:51:41 【问题描述】:

我创建了一个具有两个标签(mainLabel 和 subLabel)和一个 uiimageview 的原型单元。在 uitableview 中,我希望有几个重用原型的单元格,并且在需要时隐藏 subLabel,并且使用不同的单元格或使用 uiswitch 更改 uiimageview。这两个标签的每个单元格都有不同的文本。你有什么建议/提示可以做到吗?可能在 mvvm 架构中?

我将描述我在做什么:

我有一个具有两个属性的结构(模型):标签和子标签。然后由为每个单元格提供文本的 viewModel 实例化,通过名为 getModel(_ indexPath: IndexPath) -> cellModel ... 的方法完成。最后在 UIViewController 中,在 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ... 我调用 getModel(),使用 dequeueReusableCell 并设置每个单元格。 在 getModel() 中有一个 huuuuge 开关,我用它来知道哪个单元格是哪个

然后在 uitableviewcell 中,我有一些方法可以隐藏子标签并更改 uiimageview。

它有点工作,但是我在滚动时遇到了一些问题。例如,有时在另一个单元格中绘制了一个 uiimageview,或者隐藏了一个 subLabel,即使它不应该这样做。我想这是由于它正在重用单元格,而我没有重置它。

无论如何,有什么建议或想法吗?

我知道这太过分了......

【问题讨论】:

【参考方案1】:

不需要任何模式。是的,您可以对所有电池使用该单电池设计。只需隐藏/清空每个单元格的标签和图像视图即可。

【讨论】:

【参考方案2】:

首先你必须为标签和图像视图设置默认值

即(考虑一个标题标签、一个子标签和一个图像视图)

lblTitle.isHidden = false
      lblSubLabel.isHidden = false
      imgViewIcon.image = nil 

然后在特定条件下显示您想要匹配的标签并在 imageview 中设置图像

即(考虑你的条件隐藏子标签)

if needToHide == true 
      lblSubLabel.isHidden = true

【讨论】:

以上是关于我可以将单个自定义单元格用于多个不同的单元格吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用IFS公式在单元格中搜索特定文本,然后将文本返回到当前单元格吗?

具有多个 UIButton 的多个自定义单元格崩溃

如何在 TableView 中添加不同的自定义单元格 [重复]

我想在单个表格视图中使用来自 nib 的两个不同的自定义单元格。两个原型电池具有不同的高度

如何在表格视图中加载不同的自定义单元格

带有Swift的多个自定义单元格的UITableview