如果它们之间的差异不大,是否应该重用tableView单元格?

时间:2018-09-26 14:28:48

标签: ios uitableview ios-autolayout

我只想知道哪种是进行单元重用的更好方法 例如:

单元格1:

  • 名称
  • 详细信息
  • 时间

单元2:

  • 名称
  • 详细信息
  • 图片
  • 时间

两个单元格“名称”,“详细信息”和“时间”具有相同的位置。 所以,我的问题是:

  1. 我应该使用一个单元进行重用(在运行时修改约束)还是创建两个单独的单元?
  2. 我认为使用两个单元格会具有更好的性能,但是如何在xib中重用“名称”,“详细信息”,“时间”的自动布局(如果使用代码,这对我来说很容易,但是我的项目使用xib)

2 个答案:

答案 0 :(得分:0)

您有很多选择。

  • 使用堆栈视图,则不需要操纵约束来隐藏元素。让您仅创建一个情节提要/ IB实例,并很好地隐藏堆栈视图句柄。
  • 使用两个唯一的单元格,它们可以随着需求的变化随着时间的流逝沿着不同的路径发展。

或者我的喜好

  • 创建单元子类,可以说是BaseCell,它可以加载对象或 可以提供名称/详细信息/时间,cell.load(xxx)

  • 的协议
  • 创建一个将BaseCell子类化的单元格,例如ImageBaseCell,该单元格将加载 加载可以提供的对象或协议的对象 名称/详细信息/时间/图像,在此处处理图像,但是super.load(xxx)将 处理其余的事情。

这确实需要每个单元子类单独的xib。但是,这样,用于处理名称/详细信息/时间的逻辑就在一个地方,而不是几个单元格类。

答案 1 :(得分:0)

我建议使用两个单独的单元格。表格视图数据源方法将负责填充单元格内容,而不是您在cellForRowAtIndexPath方法内部处理视图。另外,如果您要在一个单元格中合并大小不同的内容,则对于具有不同内容的单元格,最好同时使用多个单元格。