Итак, я хочу выделить конкретный UIView
в iCarousel, когда я нажимаю кнопку в этом представлении, и я хочу иметь возможность выделять столько представлений, сколько захочу, в карусели. Итак, у меня есть кнопка, которая устанавливает альфа-канал UIImageview
в представлении. Проблема, с которой я сталкиваюсь, заключается в том, что хотя он знает индекс представления, я не знаю, как вызвать соответствующий индекс UIImageview
в этом представлении. Итак, я устанавливаю UIImageview
в пользовательском наконечнике, и у меня есть этот код, настраивающий просмотр iCarousel:
ОБНОВЛЕНО на основе ответа @danh
//.h
@property (nonatomic, strong)NSMutableSet *selected;
//.m
- (void)viewDidLoad
{
self.selected = [NSMutableSet set];
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
//create new view if no view is available for recycling
if (view == nil)
{
view = [[[NSBundle mainBundle] loadNibNamed:@"ItemView" owner:self options:nil] lastObject];
}
int chkTag = checkImg.tag;
checkImg = (UIImageView *)[checkImg viewWithTag:chkTag];
NSNumber *indexNum = [NSNumber numberWithInt:index];
// here's where the view state gets set
checkImg.alpha = ([self.selected member:indexNum])? 1.0 : 0.0;
return view;
}
Затем я вызываю это, когда выбирается конкретное представление:
- (void)carouselCurrentItemIndexUpdated:(iCarousel *)carousel1{
NSInteger indexInt = carousel1.currentItemIndex;
NSNumber *index = [NSNumber numberWithInt:indexInt];
if ([self.selected member:index]) {
[self.selected removeObject:index];
} else {
[self.selected addObject:index];
}
// now just reload that item, and let the viewForItemAtIndex
// take care of the selection state
[carousel reloadItemAtIndex:indexInt animated:NO];
}
Который работает, но позволяет мне выбирать только один элемент за раз и проверять его. Я хочу иметь возможность выбирать/отменять выбор нескольких элементов одновременно.