ios开发-商品规格选择

2020-08-09  本文已影响0人  善良的皮蛋

项目中有个商品规格选择如图:


image.png

其实原理就是实现collectionview 的多section 单选,通过model来管理cell的选中状态,通过一个数组dataArray来存储选中的cellIndexPath,但是在实际操作中出现的问题是,在遍历dataArray中又对dataArray进行修改会造成crash.下面是我是现实的代码:

 /**  保存index  */
        if (weakself.indexArray.count >0) {
            for (NSIndexPath *index in weakself.indexArray) {
                if (cellIndexPath.section != index.section) {
                    [weakself.tempArray addObject:cellIndexPath];
                }else if (cellIndexPath.section == index.section){
                    if (indexPath.row != index.row) {
                        //先移除再添加
                        [weakself.tempArray removeObject:index];
                        [weakself.tempArray addObject:cellIndexPath];
                    }
                }
            }
        }else{
            [weakself.tempArray addObject:cellIndexPath];
        }
        if (weakself.indexArray.count > 0) {
            [weakself.indexArray removeAllObjects];
        }
        /** 数组去重 */
        NSSet*set = [NSSet setWithArray:weakself.tempArray];
        [weakself.indexArray addObjectsFromArray:[set allObjects]];

        [weakself.baseCollectionView reloadData];

关键是定义一个tempArr,然后进行去重就得到了选中的IndexPath数组。

上一篇 下一篇

猜你喜欢

热点阅读