• UICollectionView设置首个cell默认选中


    设置UICollectionView中某个cell的默认选中,刚开始为追求性能,采用同一个cellId去标识UICollectionViewCell,却由于cell的重用会导致之前选中的cell在被重用后并不会响应取消选中的代理方法,会造成多个cell选中的结果。  在- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath代理方法中根据每个indexPath.row去设置每个cell的id,防止cell重用,并保存在一个字典中,并把cell的注册方法放在该代理方法中代码如下:

            NSString *identifier = [self.cellIdentifierDictM objectForKey:[NSString stringWithFormat:@"%@", indexPath]];
            
            if(identifier == nil){
                
                identifier = [NSString stringWithFormat:@"selectedCell%@", [NSString stringWithFormat:@"%zd", indexPath.row]];
                
                [self.cellIdentifierDictM setObject:identifier forKey:[NSString  stringWithFormat:@"%@",indexPath]];
                
                // 注册Cell(把对cell的注册写在此处)
                
                [collectionView registerClass:[LBCollectionFirstCell class] forCellWithReuseIdentifier:identifier];
                
            }

      由于我这边的数据是从网络上加载的,是再加载过数据并刷新之后,设置默认UICollectionView的第一个Cell选中代码如下:

       NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
       [self collectionView:self.firstHeadView.catogeryCollectionView didSelectItemAtIndexPath:indexPath];
       [self.firstHeadView.catogeryCollectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];

    这种方法对于较多cell的话,性能有限,最后提醒不要忘了字典的初始化

  • 相关阅读:
    bzoj 1208: [HNOI2004]宠物收养所 (Treap)
    Bzoj 2431: [HAOI2009]逆序对数列 (DP)
    Bzoj 1055: [HAOI2008]玩具取名 (区间DP)
    线段树入门详解
    Bzoj 1087: [SCOI2005]互不侵犯King
    Bzoj 2748: [HAOI2012]音量调节 (DP)
    Bzoj 2752 高速公路 (期望,线段树)
    惨淡的模拟赛
    GSS4
    Bzoj 近期题目一句话题解
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/10732959.html
Copyright © 2020-2023  润新知