如何在屏幕上显示UIControl的子类

我已经通过下面的代码创build了一个名为ToggleImageControl的UIControl的子类(参考下面的在UITableViewCell中的checkbox图像切换 )

@interface ToggleImageControl : UIControl { BOOL photoIsStarred; UIImageView *imageView; UIImage *normalImage; UIImage *selectedImage; } @property (nonatomic, assign) BOOL photoIsStarred; @property (nonatomic, retain) UIImageView *imageView; @property (nonatomic, retain) UIImage *normalImage; @property (nonatomic, retain) UIImage *selectedImage; - (void) toggleImage; @end @implementation ToggleImageControl @synthesize photoIsStarred, imageView, normalImage,selectedImage; - (id)initWithFrame:(CGRect)frame { NSLog(@"in inti with frame method"); self.normalImage = [UIImage imageNamed: @"blank_star.png"]; self.selectedImage = [UIImage imageNamed: @"star.png"]; self.imageView = [[UIImageView alloc] initWithImage: normalImage]; // set imageView frame [self addSubview: imageView]; [self addTarget: self action: @selector(toggleImage) forControlEvents: UIControlEventTouchDown]; return self; } - (void) toggleImage { NSLog(@"image toggled"); self.photoIsStarred = !photoIsStarred; self.imageView.image = (photoIsStarred ? selectedImage : normalImage); } @end 

我试图在表格单元格中创buildToggleImageControl的实例,但无法显示“正常图像”。 下面是我的实现中有什么缺失?

 //In a UItableview cell ToggleImageControl *toggleControl = [[ToggleImageControl alloc]initWithFrame:CGRectMake(670, 10,80, 80)]; [cell.contentView addSubview:toggleControl]; 

确保在initWithFrame:方法中调用[super initWithFrame:frame]

 self = [super initWithFrame:frame]; if (self) { // Initialization } return self;