 <p>You probably want to move your whiteLine subview initialization to <code>initWithStyle:reusedIdentifier:</code> Currently you set up the alpha before it gets instantiated. Also, you're creating a new view every time drawRect: is called, which definitely is a no-no as well.</p> <p>I'm not currently at the compiler, but something like this should solve your issue:</p> <p>Note that I also added the autorelease call to your whiteLine subview (I assume it is a retained property). You may want to consider using ARC if you're not comfortable with Cocoa Memory Management. Otherwise I suggest re-reading <a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html" rel="nofollow">Apple's Memory Management</a> guide and possibly excellent <a href="http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml" rel="nofollow">Google Objective-C Code Style Guide</a></p> <p>In BaseCell.m:</p> <pre><code>- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)identifier { self = [super initWithStyle:style reuseIdentifier:identifier]; if (self) { self.whiteLine = [[[UIView alloc] initWithFrame:CGRectMake(0.0, self.frame.size.height-1.0, self.frame.size.width, 1.0)] autorelease]; self.whiteLine.backgroundColor = [UIColor whiteColor]; [self addSubview:self.whiteLine]; } return self; } - (void)dealloc { self.whiteLine = nil; [super dealloc]; } - (void)rowIsOdd:(BOOL)isOdd { self.whiteLine.alpha = (isOdd ? 0.7 : 0.3); } </code></pre>