仅删除一个单元格的分隔线

Jes*_*ica 32 objective-c uitableview ios

我正在尝试删除一个分隔符UITableViewCell.我做了以下事情:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;
    cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];

    if (indexPath.row == 1)
        cell.separatorInset = UIEdgeInsetsZero;

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

(是的static cells.)当我运行应用程序时.分隔线仍在那里.如何删除分隔线cell

Grz*_*ski 25

在iOS 8上,您需要使用:

cell.layoutMargins = UIEdgeInsetsZero
Run Code Online (Sandbox Code Playgroud)

如果您想要与iOS 7兼容,您应该执行以下操作:

if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
    [cell setSeparatorInset:UIEdgeInsetsZero];
}

if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
    [cell setLayoutMargins:UIEdgeInsetsZero];
}
Run Code Online (Sandbox Code Playgroud)

ADD:如果以前没有用 - 请使用它.(来自下面的答案)

 cell.separatorInset = UIEdgeInsetsMake(0, 1000, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • 这些解决方案对我而言均不起作用 (2认同)

Val*_*gin 16

您可以直观地通过separatorInset属性隐藏分隔符:

tableViewCell.separatorInset = UIEdgeInsets(top: 0, left: 10000, bottom: 0, right: 0)
Run Code Online (Sandbox Code Playgroud)


dim*_*iax 9

斯威夫特4

iOS 11

为您需要自定义的特定单元格分配下一个值。

cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, .greatestFiniteMagnitude)
cell.directionalLayoutMargins = .zero
Run Code Online (Sandbox Code Playgroud)


Kos*_*dis 7

如果要仅为特定类型的单元格隐藏分隔线,可以使用以下代码:

 override func layoutSubviews() {
    super.layoutSubviews()
    subviews.forEach { (view) in
        if view.dynamicType.description() == "_UITableViewCellSeparatorView" {
            view.hidden = true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将此代码写入单元格(它必须是子类UITableViewCell),您不希望出现分隔线.

  • 我尝试了一堆其他解决方案,这最终成为最少的hacky.在Swift 3.0中,这是正确的语法:`subviews.forEach {if in type(of:view).description()=="_ UITableViewCellSeparatorView"{view.isHidden = true}}` (2认同)
  • 最狡猾的解决方案. (2认同)

Sha*_*med 5

斯威夫特 5 享受

//MARK:- In which row you want to hide 
cell.separatorInset = UIEdgeInsets(top: 0, left: CGFloat.greatestFiniteMagnitude, bottom: 0, right: 0);
Run Code Online (Sandbox Code Playgroud)