自定义UIButton无法与链接的UIImageView进行交互

时间:2010-07-09 07:33:00

标签: iphone uiimageview uibutton

我坚持使用以下代码。 一些我的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

1 个答案:

答案 0 :(得分:2)

正如ThomasMüller在评论中提到的那样,我也认为行动应该在控制者中。

除此之外,在您的代码中,您正在更改“imageView”对象的隐藏属性,而您在声明中创建的自定义图像视图是“linkImageView”。 代码不会引发错误,因为'imageView'是在UIButton中声明的按钮的只读属性,它代表按钮图像视图而不是您的linkImageView

希望这有帮助。

谢谢, Swapnil