美文网首页
瀑布流练习遇到的问题

瀑布流练习遇到的问题

作者: 一只知更鸟的人生 | 来源:发表于2017-02-27 16:24 被阅读64次

    在做自定义瀑布流的时候,出了一个错误,搞了好久不知为何

    2017-02-27 16:07:36.025 瀑布流练习[1022:450207] *** Assertion failure in -[UICollectionViewData validateLayoutInRect:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3512.60.12/UICollectionViewData.m:408
    

    经过多方对比调试才发现为什么出错

    @interface HPCollectionViewFlowLayout ()
    /** 存储每一列最大Y值*/
    @property (strong, nonatomic) NSMutableArray *columnMaxYs;
    /** 存放所有cell的属性*/
    @property (strong, nonatomic) NSMutableArray *cellAttrsArray;
    @end
    

    里面有两个属性,在实现- (void)prepareLayout这个方法的时候忘记清空,导致在ViewController中加载更多数据后调用- (void)reloadData时候,出现错误以上错误

    #pragma mark - 实现内部的方法
    - (void)prepareLayout
    {
        [super prepareLayout];
        // 设置默认值
        self.rowSpace = DEFAULTSPACE;
        self.columnSpace = DEFAULTSPACE;
        self.cellColumn = DEFAULTCOLUMN;
        self.sectionEdgeInsets = UIEdgeInsetsMake(DEFAULTSPACE, DEFAULTSPACE, DEFAULTSPACE, DEFAULTSPACE);
        
        
        [self.cellAttrsArray removeAllObjects];
        // 重置每一列的最大值
        [self.columnMaxYs removeAllObjects];
        
        
        
        for (int column=0; column < self.cellColumn ; column++) {
            [self.columnMaxYs addObject:@(DEFAULTSPACE)];
        }
    }
    

    所以重要的事情说三遍,一定要在- (void)prepareLayout中清空数组或者初始化数组!!!
    所以重要的事情说三遍,一定要在- (void)prepareLayout中清空数组或者初始化数组!!!
    所以重要的事情说三遍,一定要在- (void)prepareLayout中清空数组或者初始化数组!!!

    相关文章

      网友评论

          本文标题:瀑布流练习遇到的问题

          本文链接:https://www.haomeiwen.com/subject/zlizwttx.html