如何在静态 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 并配置它们的 seperatorInset
和 layoutMargins
属性,但是它不起作用。所以我想知道是否有其他方法可以删除分隔符?谢谢!
【问题讨论】:
【参考方案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 中仅删除一个部分的分隔符?的主要内容,如果未能解决你的问题,请参考以下文章