【发布时间】:2014-06-10 18:33:09
【问题描述】:
因此,当我单击该视图中的按钮时,我想在 iCarousel 中突出显示特定的UIView,并且我希望能够在轮播中突出显示尽可能多的视图。所以我有一个按钮可以在视图中设置UIImageview 的alpha 我遇到的问题是虽然它知道视图的索引我不知道如何调用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];
}
这可行,但只允许我一次选择一项并检查它。我希望能够一次选择/取消选择多个项目。
【问题讨论】:
标签: ios objective-c xcode uiview icarousel