iOS DeveloperiOS OC 学习手册

关于view的tag复用的问题

2016-07-14  本文已影响230人  雪儿的小木屋

关于view的tag复用的问题,也许对于一些人来说,没有踩过这个坑,但是我踩过好几次。对于在一个view上创建几个子类,如果是动态创建的话,最好的方式就是用tag值进行复用。

比如:

UIButton*btn = (UIButton*)[self.scrollView viewWithTag:kBaseButtonTag+ index];

if(!btn){

btn = [[UIButton allc]initWithType:buttonType];

btn.tag=kBaseButtonTag+ index;

}

[btn setFrame:CGRectMake(kMarginHorizon+ index *kItemGap+ index * btnWidth,kMarginVertical, btnWidth,kItemHeight)];

[btn refreshViewWithGroupCategoryItem:groupCategoryItem withTitleBackGroundImage:nil];

[btn addTarget:selfaction:@selector(buttonClickedWithSender:)forControlEvents:UIControlEventTouchUpInside];

[self.scrollView addSubview:btn];

之前是这么写的,但是对于根据个数动态创建view来说,这个代码还不是完善的。当第二次的数据比第一次少的时候,会有多于的view展示,所以在每次来新的数据时,记得重置view的subviews。例如:

- (void)resetScrollViewWithTypeArray:(NSArray*)groupTypeArray

{

NSInteger subCount =self.scrollView.subviews.count;

NSInteger newCount = groupTypeArray.count;

if(newCount > subCount)

{

[self.scrollView.subviews enumerateObjectsUsingBlock:^(__kindof UIView*_Nonnull obj,NSUInteger idx,BOOL*_Nonnull stop) {

if([obj isKindOfClass:[UIButton class]])

{

obj.hidden=NO;

}

}];

}else if(newCount < subCount)

{

for(NSInteger index = newCount ; index < subCount; index ++)

{

UIButton*btn = (UIButton*)[self.scrollView viewWithTag:kBaseButtonTag+ index];

btn.hidden=YES;

}

}

}

上一篇下一篇

猜你喜欢

热点阅读