2012-05-12 12 views
5

私はプレーンなスタイルのUITableViewを持っていました。そのセルはUITableViewCellのサブクラスです。セルのサブクラスでUITableViewCellに垂直セパレータを描画します。

私は(垂直方向のセパレータ用)で、この描画コードを配置するのdrawRectをオーバーライド:

CGContextRef c = UIGraphicsGetCurrentContext(); 
CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); 
CGContextBeginPath(c); 
CGContextMoveToPoint(c, self.frame.size.height + 0.5f, 0); 
CGContextAddLineToPoint(c, self.frame.size.height + 0.5f, self.frame.size.height); 
CGContextStrokePath(c); 

それはとてもうまくいきました。しかし、私は今、tableviewスタイルをgroupedに変更しました。線は単純に描画されません。ブレークポイントの設定によってdrawRectメソッドが呼び出されることが示されていますが、

特に、私が既にtableviewセルをサブクラス化していて、単にセルを描画したいので、サブラインのUIViewを小さな線で描画しないようにしたいと思います。なぜ、コードがグループ化されたテーブルビューで突然動作しなくなるのですか?

+0

シミュレータn cleening ur prjctをリセットしてみてください。 – Saad

答えて

10

UITableViewCellサブクラスでdrawRectを無効にすることはお勧めできません。カスタムセルのbackgroundViewを設定しない場合は、単純に1ピクセル幅のUIViewを追加できます。

UIView* vertLineView = [[UIView alloc] initWithFrame:CGRectMake(80, 0, 1, 44)]; 
vertLineView.backgroundColor = [UIColor redColor]; 
[self.contentView addSubview:vertLineView]; 
+1

合意。または、カスタムラインイメージを含むUIImageViewをセルに追加することもできます。 – Joel

+1

なぜそれは良い考えではありませんか? –

+0

私はそれについて間違っていたと思う。場合によっては、 'drawRect'をオーバーライドすることが妥当かもしれません。 – onegray

関連する問題