【问题标题】:Override tableView.separatorStyle for a single cell or section为单个单元格或部分覆盖 tableView.separatorStyle
【发布时间】:2013-10-02 07:38:06
【问题描述】:

我正在尝试将单个部分(或行,我想)的 tableView.separatorStyle 设置为 UITableViewCellSeparatorStyleNone,但允许将其设置为其他所有部分的默认值。

作为一个例子(意外行为):

虽然图像底部(和顶部)的行应显示围绕每个部分的默认灰线,但对于这个特定部分,即使我已将单元格的 backgroundColor 设置为 [UIColor clearColor],我也会也想从这个特定部分删除分隔符。

似乎没有任何委托/数据源方法允许在每个部分的基础上覆盖它。 separatorStyle 属性的文档提到:

UITableView 使用此属性在 tableView:cellForRowAtIndexPath: 中的委托返回的单元格上设置分隔符样式。

所以听起来它是在我构建单元格之后应用的,而 setter 仅在UITableView 级别,在..Cell 级别不可见。

【问题讨论】:

  • 这样试试。在 tableView:cellForRowAtIndexPath 中,您可以比较该部分。 if(indexPath.section==0){tableView.separatorStyle= UITableViewCellSeparatorStyleNone;}else{//随便你}
  • 如果你想对单个部分使用分隔符,你可以在 tableView:cellForRowAtIndexPath 方法中将该部分索引与 indexpath.section 进行比较。
  • @kalyanipuvvada 检查您的 cmets,您添加了 3 次相同的评论。也发布一个答案不是不同的 cmets。

标签: iphone ios objective-c uitableview ios7


【解决方案1】:

separatorStyle 属性不能用于特定单元格。它将用于所有单元格。如果您只想为某些单元格添加分隔符,请在单元格的 vie 中添加一个 UIView 作为分隔符,并将 separatorStyle 设置为 UITableViewCellSeparatorStyleNone

cellForRow.. 中,您可以检查将提供给表格视图的单元格并决定分隔符是否可见。

【讨论】:

  • 谢谢 - 这是我在其他地方看到的解决方案,但我希望有一些比手动绘制边界更强大的东西。幸运的是,我只针对 iOS 7 以后的版本,因此我不必维护多个“方案”,但拥有向前兼容的解决方案仍然很棒。
  • @CraigOtis 这将向前和向后兼容,因为您正在创建一个不依赖于任何“特殊”iOS 功能的视图层次结构。我在完成的每个项目中都使用了这种方法。
  • 对 - 但它确实取决于操作系统的风格。如果 iOS 8 或 iOS 9 完全删除了单元格边框,或者更改了宽度/颜色,我必须记住保持该更改。我的目标是找到一个将尽可能多的样式留给操作系统的解决方案。
  • 好吧,即使您尝试尽可能多地保留 iOS 风格,您也无法保证该应用程序在下一个 iOS 版本中可以正常工作/看起来相同。这些只是移动应用开发的风险:))。
【解决方案2】:

只需为您不希望有分隔符的单元格设置一个 1000 的自定义分隔符插入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-15
    • 2022-12-07
    • 2016-04-01
    • 1970-01-01
    • 2016-08-25
    • 2015-11-19
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多