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

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

单元格 1:

  • 姓名
  • 详情
  • 时间

单元格 2:

  • 姓名
  • 详情
  • 图片
  • 时间

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

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

【问题讨论】:

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

标签: ios uitableview ios-autolayout


【解决方案1】:

你有很多选择。

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

或者我的喜好

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

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

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

【讨论】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-23
    • 2014-04-09
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2012-11-04
    • 2021-06-26
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多