当它们差别不大时,我应该重用 tableView 单元格吗?

Should I reuse tableView cells when they have little difference?

我只是想知道哪个是进行细胞复用的更好方法 例如:

单元格 1:

单元格 2:

"Name"、"Detail"、"Time" 两个单元格的位置相同。 所以,我的问题是:

  1. 我应该使用一个单元进行重用(在运行时修改约束)还是创建两个单独的单元?
  2. 我觉得使用两个cell会有更好的性能,但是如何在xib中重用"Name","Detail","Time"的自动布局(如果使用代码,这个对我来说很容易,但我的项目使用 xib)

你有很多选择。

  • 使用堆栈视图,那么隐藏元素不需要操纵约束。让您只创建一个 storyboard/IB 实例和堆栈视图句柄很好地隐藏。
  • 使用两个独特的单元格,随着需求的变化,它们可以随着时间的推移沿着不同的路径生长。

或者我的偏好

  • 创建单元格子类,比方说 BaseCell,加载对象或 可以提供的协议 name/detail/time, cell.load(xxx)

  • 创建一个子单元类 BaseCell,例如 ImageBaseCell,加载 加载可以提供的对象或协议的对象 name/detail/time/image,这里处理图片,但是super.load(xxx)会 处理其余部分。

这确实需要每个细胞子类的单独 xib。但是,这样一来,处理 name/detail/time 的逻辑就在一个地方,而不是几个单元格 类。

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