, 그것은 선택의 모든 그 수준에서 해제 추적하는 의미가 있습니다.
오버레이의 경우 신속하고 더러운 방법은 UIImageView를 서브 클래스 화하고 selected
이라는 BOOL 속성을 추가하는 것입니다. 그런 다음 설정자를 selected
으로 대체하고 오버레이보기를 표시하거나 숨길 수 있습니다.
내 하위 클래스를 설정하는 방법은 다음과 같습니다. 먼저 인터페이스 :
@interface SelectableImageView : UIImageView
@property (nonatomic, assign, getter = isSelected) BOOL selected;
@end
및 구현 ...
@interface SelectableImageView()
@property (nonatomic, retain) UIView *overlayView;
@end
@implementation SelectableImageView
@synthesize selected;
@synthesize overlayView;
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
overlayView = [[UIView alloc] initWithFrame:frame];
overlayView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.75];
overlayView.hidden = YES;
[self addSubview:overlayView];
}
return self;
}
- (void)setSelected:(BOOL)flag
{
selected = flag;
self.overlayView.hidden = !flag;
}
- (void)dealloc
{
[overlayView release], self.overlayView = nil;
[super dealloc];
}
@end
감사 마크. 이미 그리드 자체의 선택을 추적합니다. 내 문제는 다음 오버레이 및 귀하의 트릭 좋은 소리. UIImageView의 하위 클래스와 하위 클래스는 무엇이며 어떻게 재정의됩니까? – jarryd
기본 UIImageView 하위 클래스를 표시하도록 내 대답을 업데이트했습니다. –
@ Mark Adams : 감사합니다. 임은 당신이 이것을 첨부하거나 테이블 뷰에 연결하는 방법에 대해 확신하지 못했습니까? 무엇을 initWithFrame으로해야합니까? – jarryd