0

IB で UITableView の行区切りスタイルと色を設定しましたが、テーブルが読み込まれると区切り線が表示されません。

カスタム スーパークラスを持つ UITableView を使用しています。CustomTableViewこれは のサブクラスですUITableView。この表では、カスタム も使用していますUITableViewCell

私が考えることができる唯一の問題は、メソッドで「スーパー」実装を呼び出さなかった場合ですが、awakeFromNibこれを行うので、そうではありません。

何か案は?

コードで編集

私のテーブルセルは次のとおりです - CustomDefaultCell.h > CustomPlainCell.h > UITableViewCell

CustomDefaultCell.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」のサブクラスである場合はUIView、背景色で 1 ポイントの高さを追加します。

于 2012-09-09T18:15:31.227 に答える