zoukankan      html  css  js  c++  java
  • 解决UICollectionViewCell/UITableViewCell因重用机制导致的错乱问题

    解决UICollectionViewCell/UITableViewCell因重用机制导致的错乱问题

    UICollectionView和UITableView在开中用的很多,可以解决很多复杂的布局问题,在设计列表式的页面布局时用到的更多,但有时因为设置不当会出现cell的内容错乱的问题。

    就拿我遇到的问题举例:

    情景一:

    在显示以及选择商品的属性时(商品的属性属于分类属性)每滑动一次页面显示属性的cell位置就会错乱,选择时就会出现选择的index对数组溢出;

    情景二:

    在某个功能情境下需要展示商城商品品牌并且进行多选,选中的和未选中的要有状态区分,但每次选择后滑动液面就会出现已选择的和页面上的状态不对应出现了错乱的状态。

    具体的解决方法:

    1.先定义一个可变的的dictionary(NSMutableDictionary)

    - (UICollectionViewCell *)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    
             NSString *identifier = [_cellIdentifierDic objectForKey:[NSString stringWithFormat:@"%@", indexPath]];  
    
          if(identifier == nil){
    
                identifier = [NSString stringWithFormat:@"selectedBtn%@", [NSString stringWithFormat:@"%@", indexPath]];
    
                [_cellIdentifierDic setObject:identifier forKey:[NSString  stringWithFormat:@"%@",indexPath]];
    
                // 注册Cell(把对cell的注册写在此处)
    
                [_collectionView registerClass:[SelectedBtnCell class] forCellWithReuseIdentifier:identifier]; 
    
           }  
    
            SelectedBtnCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
    
            if(!cell){
    
            
    
                cell = [[[NSBundle mainBundle]loadNibNamed:@"SelectedBtnCell" owner:self options:nil]lastObject];
    
            }
    
            
    
            //商品规格信息逻辑
    
    }

    注:在使用UITableViewCell时同样可以用这样的方法来解决再次不再具体说明:


    这样就可以解决上面出现的问题,其实原理也很容易理解如果有更先进的解决方法欢迎来访(http://www.cnblogs.com/Rong-Shengcom/);

  • 相关阅读:
    python基础学习24----使用pymysql连接mysql
    HTML基本标签
    python基础学习20----线程
    MySQL基础操作
    python永久添加第三方模块,PYTHONPATH的设置
    MySQL压缩包zip安装
    汇编语言debug命令与指令机器码
    python基础学习23----IO模型(简)
    python基础学习22----协程
    python基础学习21----进程
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/6491805.html
Copyright © 2011-2022 走看看