2010-07-09 37 views
3

我困在以下代码中。 一些如何我的UIButton扩展类不能显示或隐藏UIImageView自定义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

通常我会想到那些行动,在控制器中,而不是按钮。然后你应该在Interface Builder或你的视图控制器中设置按钮的动作(可能在-loadView中); – 2010-07-09 07:43:45

+0

那么函数被调用,我可以在日志中看到它们。 但链接的图像视图的所有更改都不会显示。 – rckoenes 2010-07-09 08:46:04

+0

您的UIImageView是否处于视图层次结构中?也许,你忘了把它与IB联系起来,或者它不是任何父视图的子视图? (这种方式将分配对象,但当然没有可见的视图) – kpower 2010-07-09 09:12:27

回答

2

正如托马斯·穆勒在评论中提到我也认为这些措施应在控制器中。

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

希望这会有所帮助。

感谢, Swapnil

+0

感谢天气温暖,所以我没有看到这个错误。 我也同意这些方法应该在控制器中。 除了我需要这么多次这个动作,这只是节省了我的时间。 – rckoenes 2010-07-09 12:53:18