如何在屏幕上显示 UIControl 的子类
我通过以下代码创建了一个名为 ToggleImageControl 的 UIControl 子类(参考以下帖子 复选框图像在 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];
I have created a subclass of UIControl called ToggleImageControl via the following code (with reference to the following post Checkbox image toggle in 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
I tried to create an instance of ToggleImageControl in a table cell but was not able to display the 'normal image'. Is there something missing from my implementation below?
//In a UItableview cell
ToggleImageControl *toggleControl = [[ToggleImageControl alloc]initWithFrame:CGRectMake(670, 10,80, 80)];
[cell.contentView addSubview:toggleControl];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
确保在
initWithFrame:
方法中调用[super initWithFrame:frame]
。前任
Make sure to call
[super initWithFrame:frame]
in yourinitWithFrame:
method.e.x.