collectionView
- 通過- (void)prepareForReuse是重用的屬性置空。
- 通過collectionViewCell下標(indexPath.row)使cell不重用
- 通過判斷cell防止重用
下面看代碼
cell每次重用都會走著個方法 從這里面取出控件進行重用, 我們可以重寫這個方法 ,將其控件置空就不會導致重用
- (void)prepareForReuse {
NSLog(@"MyCollection9999999%s --- %@", __func__, self);
}
- 通過cell下標進行防止重用效果
先寫一個bool類型進行判斷的一個屬性
BF9AF3CA-2F58-4F8D-8A3D-C99B30005B0C.png
在collectionView點擊方法里面拿到當前的cell
在將其bool類型的屬性將其取反使其沒點擊能有yes/no狀態
855C16E6-960A-4026-A5B9-9C272645CEBC.png
在將cell的屬性改成響應的取反效果
cell其屬性:
5D081549-C0B9-4E74-B564-8AAA2398918C.png
在- (id)initWithFrame:(CGRect)frame方法里將屬性設置好
6F79DA84-24D0-4D1F-AD8D-C403521973F1.png
在常態的時候顯示常態狀態下的圖片
選中狀態下顯示選中時的圖片
接下來就是在cell創建的方法里- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
將bool類型行進判斷
FA5E6ED8-0866-4033-8853-9845FABF7308.png
判斷YES/NO來改變其button狀態下顯示的圖片
每次上下拉cell的時候都會重用走這個方法點擊cell將其YES時每次Bool類型都是yes都會在響應下標下改變相對應button的狀態不會造成重用的現象
- 第三種方法不推薦使用,他不會使cell重用,會拉cell一次都創建新的cell,使之前的cell不會重新利用,不會保留之前的狀態
新創建一個可變的字典
每次先從字典中根據indexPath取去唯一標識
NSString *identifier=[NSString stringWithFormat:@"%ld%ld",(long)indexPath.section,(long)indexPath.row];
[collect registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:identifier];
UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
for(id subView in cell.contentView.subviews){
if(subView){
[subView removeFromSuperview];
}
}
討論技術方法面加本人QQ251099939 技術討論交流