다음 코드가 붙어 있습니다. 내 UIButton 확장 클래스가 UIImageView를 표시하거나 숨기는 방법은 무엇입니까?사용자 정의 UIButton은 링크 된 UIImageView와 상호 작용할 수 없습니다.
내 메서드 호출 중이고 imageview는 nil이 아닙니다.
@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
는 일반적으로 나는 그 행동이 컨트롤러가 아닌 버튼에 거주 할 것으로 예상한다. 그런 다음 인터페이스 빌더 또는보기 컨트롤러 (아마도 -loadView)에서 단추의 동작을 설정해야합니다. –
함수가 호출되면 로그에서 볼 수 있습니다. 그러나 링크 된 이미지 뷰의 모든 변경 사항은 표시되지 않습니다. – rckoenes
UIImageView는 뷰 계층 구조입니까? 어쩌면 IB와 링크하지 않았거나 부모보기의 하위보기가 아닐 수도 있습니다. (이 방법은 객체가 할당되지만 볼 수있는 뷰는 없습니다.) – kpower