UITableViewCell Separator disappearing in iOS7 UITableViewCell Separator disappearing in iOS7 objective-c objective-c

UITableViewCell Separator disappearing in iOS7


I dumped the subview hierarchy of affected cells and found that the _UITableViewCellSeparatorView was set to hidden. No wonder it's not shown!

I overrode layoutSubviews in my UITableViewCell subclass and now the separators are displayed reliably:

Objective-C:

- (void)layoutSubviews {    [super layoutSubviews];    for (UIView *subview in self.contentView.superview.subviews) {        if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {            subview.hidden = NO;        }    }}

Swift:

override func layoutSubviews() {    super.layoutSubviews()    guard let superview = contentView.superview else {        return    }    for subview in superview.subviews {        if String(subview.dynamicType).hasSuffix("SeparatorView") {            subview.hidden = false        }    }}

The other solutions proposed here didn't work consistently for me or seem clunky (adding custom 1 px footer views).


This worked for me:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {    // fix for separators bug in iOS 7    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;    self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;


I also had the problem with missing separator and I found out that the problem only occured when heightForRowAtIndexPath was returning a decimal number. Solution:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {    return ceil(yourHeight) // Ceiling this value fixes disappearing separators}