我创建了一个原型单元格,它有两个标签(mainLabel和subLabel)和一个uiimageview。在uitableview中,我希望有几个单元重用原型,并在需要时隐藏subLabel,并使用不同的uiswitch或uiswitch更改uiimageview。两个标签对于每个单元格具有不同的文本。你有任何建议/提示吗?可能在mvvm架构中?
我将描述我在做什么:
我有一个带有两个属性的struct(Model):label和sublabel。然后由viewModel实例化,viewModel为每个单元格提供文本,由一个名为getModel(_ indexPath:IndexPath)的方法完成 - > cellModel {...}。最后在UIViewController中,在tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath){...}我调用getModel(),使用dequeueReusableCell并设置每个单元格。 在getModel()中有一个huuuuge开关,我用它来知道哪个单元格是哪个
然后在uitableviewcell中我有一些方法可以隐藏sublabel并更改uiimageview。
它有点有用,但滚动时我遇到了一些问题。例如,有时会在另一个单元格中绘制uiimageview,或者隐藏subLabel,即使它不应该被隐藏。我想这是因为它正在重复使用单元格,而我没有重置它。
无论如何,有什么建议或想法吗?
我知道这太过分了......
答案 0 :(得分:0)
不需要任何模式。是的,您可以对所有细胞使用单细胞设计。只需按照单元格隐藏/清空标签和图像视图。
答案 1 :(得分:0)
首先,您必须为标签和imageview
设置默认值即。 (考虑标题标签,子标签和图像视图)
lblTitle.isHidden = false
lblSubLabel.isHidden = false
imgViewIcon.image = nil
然后只显示您想要匹配的特定条件的标签并在imageview中设置图像
即。 (考虑你隐藏子标签的条件)
if needToHide == true {
lblSubLabel.isHidden = true
}