2010-07-09 74 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