我坚持使用以下代码。 一些我的UIButton扩展类如何显示或隐藏UIImageView
正在调用我的方法,而imageview不是零。
以下是代码:
@interface UILinkedImageButton : UIButton {
IBOutlet UIImageView *linkImageView;
}
@property (nonatomic, retain) IBOutlet UIImageView *linkImageView;
@end
#import "UILinkedImageButton.h"
@interface UILinkedImageButton ()
- (void)showImage;
- (void)hideImage;
@end
-------------------------------------------------------------------------------------------------
@implementation UILinkedImageButton
@synthesize linkImageView;
- (void) dealloc{
[linkImageView release], linkImageView = nil;
[super dealloc];
}
- (id) initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self){
[self addTarget:self action:@selector(showImage) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(hideImage) forControlEvents:UIControlEventTouchUpInside];
[self addTarget:self action:@selector(hideImage) forControlEvents:UIControlEventTouchUpOutside];
}
return self;
}
- (void)showImage
{
if(self.imageView){
NSLog(@"UILinkImageButton - showImage - currentStatus: %@", self.imageView);
self.imageView.hidden = NO;
[self.superview layoutIfNeeded];
}
}
- (void)hideImage
{
if(self.imageView){
NSLog(@"UILinkImageButton - hideImage");
self.imageView.hidden = YES;
}
}
@end
答案 0 :(得分:2)
正如ThomasMüller在评论中提到的那样,我也认为行动应该在控制者中。
除此之外,在您的代码中,您正在更改“imageView”对象的隐藏属性,而您在声明中创建的自定义图像视图是“linkImageView”。 代码不会引发错误,因为'imageView'是在UIButton中声明的按钮的只读属性,它代表按钮图像视图而不是您的linkImageView 。
希望这有帮助。
谢谢, Swapnil