Hide separator line on one UITableViewCell Hide separator line on one UITableViewCell ios ios

Hide separator line on one UITableViewCell


in viewDidLoad, add this line:

self.tableView.separatorColor = [UIColor clearColor];

and in cellForRowAtIndexPath:

for iOS lower versions

if(indexPath.row != self.newCarArray.count-1){    UIImageView *line = [[UIImageView alloc] initWithFrame:CGRectMake(0, 44, 320, 2)];    line.backgroundColor = [UIColor redColor];    [cell addSubview:line];}

for iOS 7 upper versions (including iOS 8)

if (indexPath.row == self.newCarArray.count-1) {    cell.separatorInset = UIEdgeInsetsMake(0.f, cell.bounds.size.width, 0.f, 0.f);}


In the UITableViewDataSource cellForRowAtIndexPath method

Swift :

if indexPath.row == {your row number} {    cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: .greatestFiniteMagnitude)}

or :

cell.separatorInset = UIEdgeInsetsMake(0, 0, 0, UIScreen.main.bounds.width)

for default Margin:

cell.separatorInset = UIEdgeInsetsMake(0, tCell.layoutMargins.left, 0, 0)

to show separator end-to-end

cell.separatorInset = .zero

Objective-C:

if (indexPath.row == {your row number}) {    cell.separatorInset = UIEdgeInsetsMake(0.0f, 0.0f, 0.0f, CGFLOAT_MAX);}


To follow up on Hiren's answer.

in ViewDidLoad and the following line :

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

Or, if you are using XIB's or Storyboards change "separator" to "none" :

Interface builder

And in CellForRowAtIndexPath add this :

CGFloat separatorInset; // Separator x position CGFloat separatorHeight; CGFloat separatorWidth; CGFloat separatorY; UIImageView *separator;UIColor *separatorBGColor;separatorY      = cell.frame.size.height;separatorHeight = (1.0 / [UIScreen mainScreen].scale);  // This assures you to have a 1px line height whatever the screen resolutionseparatorWidth  = cell.frame.size.width;separatorInset  = 15.0f;separatorBGColor  = [UIColor colorWithRed: 204.0/255.0 green: 204.0/255.0 blue: 204.0/255.0 alpha:1.0];separator = [[UIImageView alloc] initWithFrame:CGRectMake(separatorInset, separatorY, separatorWidth,separatorHeight)];separator.backgroundColor = separatorBGColor;[cell addSubView: separator];

Here is an example of the result where I display a tableview with dynamic Cells (but only have a single one with contents). The result being that only that one has a separator and not all the "dummy" ones tableview automatically adds to fill the screen.

enter image description here

Hope this helps.

EDIT: For those who don't always read the comments, there actually is a better way to do it with a few lines of code :

override func viewDidLoad() {    super.viewDidLoad()    tableView.tableFooterView = UIView()}