0

我在 IB 中设置了 UITableView 的行分隔符样式和颜色,但是,当表格加载时,分隔线不可见。

我正在使用具有自定义超类的 UITableView CustomTableView- 这是UITableView. 在此表中,我还使用了自定义UITableViewCell.

我能想到的唯一问题是,如果我没有在我的awakeFromNib方法中调用“超级”实现——但我这样做了,所以不可能那样。

有任何想法吗?

用代码编辑

我的表格单元格如下 - CustomDefaultCell.h > CustomPlainCell.h > UITableViewCell

自定义默认单元格.m

- (void)awakeFromNib
{
    [super awakeFromNib];

    // Called when loaded from a nib.
    // Override all default cell behaviour here.
    //
}

CustomPlainCell.m

- (void)awakeFromNib
{
    [super awakeFromNib];

    // Called when loaded from a nib.
    // Override all default cell behaviour here.
    //
    // Normal background view
    self.backgroundView = [[UIView alloc] initWithFrame:self.frame];
    self.backgroundView.backgroundColor = [UIColor whiteColor];

    // Selected background view
    self.selectedBackgroundView = [[UIView alloc] init];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
    //
    // Background gradient
    CAGradientLayer *selectedViewGradientLayer = [CAGradientLayer layer];
    selectedViewGradientLayer.frame = CGRectMake(1.0f, 0.0f, 320.0f, CGRectGetHeight(self.frame) + 1.0f);
    selectedViewGradientLayer.colors = @[(id)[UIColor colorWithHue:0.0f saturation:0.0f brightness:0.57f alpha:1.0f].CGColor, (id)[UIColor grayColor].CGColor];

    [self.selectedBackgroundView.layer addSublayer:selectedViewGradientLayer];
}
4

2 回答 2

2

[super layoutSubviews];有同样的问题,并认为在单元原型类中覆盖该方法时我没有调用。

于 2013-05-30T13:18:55.253 回答
0

最终我决定使用委托方法tableView:willDisplayCell:forRowAtIndexPath:,如果单元格是“CustomPlainCell”的子类,则添加一个 1pt 高UIView的背景色。

于 2012-09-09T18:15:31.227 回答