The reason cell.titleLabel is always displayed correctly but the custom drawing isn't, is because you are updating the cell.titleLabel
each time but the way you have the custom drawing setup, it will only effect newly created cells.
This is because under normal conditions, drawRect: is usually triggered when the view is first added to the screen and made visible. You are reusing cells, thus causing the drawing to remain on the views even when they are being used else where.
You need to add [cell setNeedsDisplay]
after you change the cell.drawCircle
value. This will cause the cell's drawRect: method to be triggered again.