我正在实现一个静态TableView,它在Swift中有两个部分。我希望仅在第0部分中与UITableViewCellSeparatorStyle.None
具有相同的效果,而在另一部分中保留分隔符。由于它是一个静态TableView,我无法在cellForRowAtIndexPath
函数中配置单元格(它总是得到一个单元格值nil
)。我尝试为每个静态单元格制作一些IBOutlet并配置它们的seperatorInset
和layoutMargins
属性,但它不起作用。所以我想知道是否有其他方法可以删除分隔符?谢谢!
答案 0 :(得分:6)
首先添加效果UITableViewCellSeparatorStyle.None到tableView。之后,您可以在单元格中添加一个看起来像分隔符的小视图。 然后使用cell.in提供与分隔符View的连接。在cellForRowAtIndexPath中你唯一需要做的就是
if(indexPath.section == 0) {
seperatorView.hidden = false
} else {
seperatorView.hidden = true
}
这是解决问题的一个小技巧。希望它有所帮助
答案 1 :(得分:1)
使用tableview Separator没有直接的方法来设置它。正如你所说的静态表视图,这么简单的方法就是从tableview中删除Separator并在底部添加Separator UIComponent,它看起来像是所需单元格的Separator。
的屏幕截图答案 2 :(得分:1)
在GetCell
(Xamarin.iOS)中扩展@ chakshu的回答:
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;
}
答案 3 :(得分:0)
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)
}
}