Как отобразить подкласс UIControl на экране

Я создал подкласс UIControl под названием ToggleImageControl через следующий код (со ссылкой на следующее сообщение об изменении флажка в UITableViewCell )

@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 

Я попытался создать экземпляр ToggleImageControl в ячейке таблицы, но не смог отобразить «нормальное изображение». Что-то не хватает в моей реализации ниже?

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

Обязательно вызовите [super initWithFrame:frame] в вашем методе initWithFrame: .

бывший

 self = [super initWithFrame:frame]; if (self) { // Initialization } return self; 
Interesting Posts
Давайте будем гением компьютера.