Eliminar la línea de separación para una sola celda

Estoy intentando quitar el separador para una UITableViewCell . Hice lo siguiente:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell; cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; if (indexPath.row == 1) cell.separatorInset = UIEdgeInsetsZero; return cell; } 

(Son static cells .) Cuando ejecuto la aplicación. La línea del separador todavía está allí. ¿Cómo puedo eliminar la línea de separación para una cell ?

En iOS 8 debes usar:

 cell.layoutMargins = UIEdgeInsetsZero 

Si quieres ser compatible con iOS 7 también deberías hacer lo siguiente:

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

AGREGAR: si el anterior no funcionó, use esto. (de la respuesta a continuación)

  cell.separatorInset = UIEdgeInsetsMake(0, 1000, 0, 0); 

Simplemente puede ocultar visualmente el separador a través de la propiedad separatorInset :

 tableViewCell.separatorInset = UIEdgeInsets(top: 0, left: 10000, bottom: 0, right: 0) 

Si desea esconder la línea de separación solo para un tipo específico de celda, puede usar el siguiente código:

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

Escriba este código en la celda (debe ser una subclass de UITableViewCell ) para el que no desea que aparezca una línea de separación.

Para aquellas personas que luchan con esto para iOS 9, la solución es un poco diferente de las respuestas ya dadas. Aquí es cómo lo solucioné en Swift:

 override func viewWillAppear(animated: Bool) { table.cellLayoutMarginsFollowReadableWidth = false } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { if IS_THE_CELL_WITH_NO_SEPARATOR{ cell.separatorInset = UIEdgeInsetsZero cell.preservesSuperviewLayoutMargins = false cell.layoutMargins = UIEdgeInsetsZero } } func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { if IS_THE_CELL_WITH_NO_SEPARATOR{ let size = self.view.bounds.size let rightInset = size.width > size.height ? size.width : size.height cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, rightInset) } } 
 cell.separatorInset = UIEdgeInsetsMake(0.0 , cell.bounds.size.width , 0.0, -cell.bounds.size.width) 

Simplemente agregue siguiendo a la celda que no desea separador (swift 3):

 override func awakeFromNib() { super.awakeFromNib() // remove separator self.separatorInset = UIEdgeInsetsMake(0, 1000, 0, 0) } 

Otra forma que es un poco hacky es crear la celda de vista de tabla personalizada con una uiView que actúa como una inserción de separador. Luego, oculte y muestre eso cuando quiera.

Creé SampleTableViewCell y un file nib con label y separatorLineView

 @interface SampleTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *titleLabel; @property (weak, nonatomic) IBOutlet UIView *separatorLineView; @end 

Entonces, en la class ViewController

 @interface ViewController () @property (nonatomic) NSArray *items; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.items = @[@"A", @"B", @"C"]; [self.tableView registerNib:[UINib nibWithNibName:@"SampleTableViewCell" bundle:nil] forCellReuseIdentifier:@"SampleCell"]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { SampleTableViewCell *cell = (SampleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"SampleCell" forIndexPath:indexPath]; cell.titleLabel.text = self.items[indexPath.row]; if (indexPath.row == 1) { cell.separatorLineView.hidden = YES; } else { cell.separatorLineView.hidden = NO; } return cell; } @end 

Swift 3 eliminar separador todas las celdas:

  override func viewDidLoad() { self.yourTableView.separatorStyle = UITableViewCellSeparatorStyle.none }