2012-05-12 13 views
5

Avevo un UITableView in stile semplice e le sue celle sono una sottoclasse di UITableViewCell.Disegna separatore verticale su UITableViewCell

Nella sottoclasse di cellule che overrode drawRect inserire questo codice disegno (per un separatore verticale):

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); 

ha funzionato grande. Tuttavia ora ho cambiato lo stile tableview in raggruppato. La linea semplicemente non è disegnata. Sebbene le impostazioni di un punto di interruzione mostra il metodo drawRect viene chiamato.

Vorrei evitare le sottoclassi di UIView solo per disegnare una piccola riga, soprattutto perché ho già suddiviso la cella tableview e voglio solo disegnare sulla cella. Quindi, perché il codice smette improvvisamente di funzionare su un tableview raggruppato?

+0

provare a reimpostare il simulatore n cleening ur prjct – Saad

risposta

10

Non è consigliabile sovrascrivere le sottoclassi drawRect in UITableViewCell. Se non si desidera impostare la cella personalizzata backgroundView, è sufficiente aggiungere semplicemente UIView di larghezza 1px.

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

concordato. Oppure puoi aggiungere UIImageView con un'immagine di linea personalizzata alla cella. – Joel

+1

Perché non è una buona idea? –

+0

Penso di essermi sbagliato su questo. In alcuni casi potrebbe essere ragionevole sovrascrivere 'drawRect'. – onegray