当它们几乎没有区别时,我应该重用 tableView 单元格吗? [关闭]

Posted

技术标签:

【中文标题】当它们几乎没有区别时,我应该重用 tableView 单元格吗? [关闭]【英文标题】:Should I reuse tableView cells when they have little difference? [closed] 【发布时间】:2018-09-26 14:28:47 【问题描述】:

我只是想知道哪种方法可以更好地重用单元格 例如:

单元格 1:

姓名 详情 时间

单元格 2:

姓名 详情 图片 时间

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

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

【问题讨论】:

单元格 1 是多次出现还是标题单元格? "但是如何在 xib 中重用 "Name","Detail","Time" 的自动布局" 只需在每个 xib 中单独执行即可。您不需要“重用”任何自动布局。 【参考方案1】:

你有很多选择。

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

或者我的喜好

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

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

这确实需要每个单元子类单独的 xib。然而,这种方式,处理名称/细节/时间的逻辑在一个地方,而不是几个单元格类。

【讨论】:

感谢您的回答。我认为您的 xib+subclass 是最好的方法!【参考方案2】:

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

【讨论】:

以上是关于当它们几乎没有区别时,我应该重用 tableView 单元格吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Resize和SizeChanged事件之间的区别

IOS swift TableView有没有一种方法可以重用它们

如何重用表单(并在需要时更改其上下文)以避免多个相同的表单? C#[关闭]

如何重用两个类似COM对象的代码?

微服务应该可重用吗?

不同的 BerkeleyDB 版本有啥区别,我应该选择哪个?