如何在静态 UITableView 中仅删除一个部分的分隔符?

Posted

技术标签:

【中文标题】如何在静态 UITableView 中仅删除一个部分的分隔符?【英文标题】:How to remove the separator for only one section in a static UITableView? 【发布时间】:2015-08-06 08:25:02 【问题描述】:

我正在实现一个静态 TableView,它在 Swift 中有两个部分。我希望仅在第 0 节中具有与 UITableViewCellSeparatorStyle.None 相同的效果,而在另一节中保留分隔符。由于它是一个静态 TableView,我无法在 cellForRowAtIndexPath 函数中配置单元格(它总是得到一个单元格值 nil)。我尝试为每个静态单元格制作一些 IBOutlet 并配置它们的 seperatorInsetlayoutMargins 属性,但是它不起作用。所以我想知道是否有其他方法可以删除分隔符?谢谢!

【问题讨论】:

【参考方案1】:

首先给tableView添加效果UITableViewCellSeparatorStyle.None。之后,您可以在单元格中添加一个看起来像分隔符的小视图。 然后用单元格连接到分隔符视图。之后,您在 cellForRowAtIndexPath 中唯一要做的就是

if(indexPath.section == 0) 
     seperatorView.hidden = false
 else 
     seperatorView.hidden = true

这是解决您的问题的一个小技巧。希望对你有帮助

【讨论】:

我之前找到了这个解决方案,但是我不能使用cellForRowAtIndexPath 来配置静态 tableView 中的单元格......无论如何,谢谢。【参考方案2】:

没有直接的方法可以使用 tableview 分隔符来设置它。正如你所说的它是一个静态表格视图,那么简单的方法就是从表格视图中删除分隔符并在底部添加分隔符 UIComponent,它看起来像所需单元格的分隔符。

这也是那个截图

【讨论】:

认为该解决方案看起来不够优雅,但效果很好......非常感谢!似乎静态表格视图不是那么有用...【参考方案3】:

要扩展@chakshu 的答案,请在GetCell(Xamarin.ios) 中:

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)

    var customCell = TableView.DequeueReusableCell(SomeCellId, indexPath) as SomeCustomCell;
    if ( customCell == null )
        return null;

    var view = new UIView();
    var bounds = customCell.Bounds;
    view.BackgroundColor = UIColor.LightGray;
    view.Frame = new CoreGraphics.CGRect(bounds.X, bounds.Height - 1, bounds.Width, 1);
    customCell.Add(view);

    return customCell;

【讨论】:

如果你想要标准的分隔符颜色,你可以使用view.BackgroundColor = new UIColor(new CGColor(200 / 255f, 199 / 255f, 204 / 255f));。或者你也可以考虑view.BackgroundColor = TableView.BackgroundColor【参考方案4】:

1.首先将你的tableViewSeparatorInset设置为零:

tableView.separatorInset = .zero

2.验证separatorCell将出现在“cellForRowAt”中的什么位置,例如:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell  

    let cell = tableView.dequeueReusableCell(withClass: DeliveryCell.self, for: indexPath)

    if indexPath.section == .deliverySection 
       cell.separatorInset = UIEdgeInsets(horizontal: tableView.bounds.width, vertical: 0)
    

【讨论】:

以上是关于如何在静态 UITableView 中仅删除一个部分的分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

如何从Storyboard中创建的静态UITableView中删除单元格

在 UITableView 中仅重新加载一个节标题

如何在结果表中仅显示选定的记录

如何删除 UITableView 中的空单元格? [复制]

如何删除 UITableView 中的空单元格? [复制]

在运行时从静态 UITableView 中删除行