请问有经验的大神们,我现在想让tableView存聊天记录,只显示10条,下拉一下刷新,加载10条,一直到聊天记录显示完。在网上找了demo用。EGORefreshTableHeaderView。应该很多人都用过,但是用这个demo只能下拉刷新,我是想下拉一次加载10个,数据源是存在数据库里的存取没有问题。tableView下拉加载

解决方案 »

  1.   

    以下代码是我scrollView代码实现滑动下载的核心代码。希望对你有参考作用。
    //szVision--表示可见的范围
    //szItem -- 表示每个显示在scrollview的单品尺寸
    //szDiff -- 表示每个item之间的距离
    -(NSMutableSet*)getDownloadIndexSetForVerticalStyle:(int)nColNums
    {
        assert(self.showsVerticalScrollIndicator == YES);
        
        if(self.contentOffset.y<0)
            return nil;
        
        NSMutableSet* setVisionIndex = [[NSMutableSet alloc]init];
        int nUpExposeHeight = 0;
        int nVisionRowNums = 0;
        int nVisionStartRowMark = -1;//无效值-1,最小值为0, 后续加1
        if(self.contentOffset.y >= -0.1 && self.contentOffset.y<=0.1)
        {
            nUpExposeHeight = 0;
            if(self.szVision.height < self.szItem.height)
            {
                //获取第一行所有item的编号
                nVisionRowNums = 1;
                nVisionStartRowMark = 0;
                [self pushVisionIndexToSet:&setVisionIndex withVSRM:nVisionStartRowMark withVRN:nVisionRowNums withCN:nColNums];
            }
            else
            {
                nVisionStartRowMark = 0;
                nVisionRowNums = (( (self.szVision.height-self.szItem.height)+(self.szDiff.height+self.szItem.height-1)) / (self.szDiff.height+self.szItem.height) ) + 1;
                [self pushVisionIndexToSet:&setVisionIndex withVSRM:nVisionStartRowMark withVRN:nVisionRowNums withCN:nColNums];
            }
        }
        else if( (self.contentOffset.y<=self.szItem.height) && (self.contentOffset.y>0) )
        {
            nVisionStartRowMark = 0;
            nUpExposeHeight = self.szItem.height - self.contentOffset.y;
            int nLeaveVisionHeight = self.szVision.height - nUpExposeHeight;
            nVisionRowNums = ( (nLeaveVisionHeight+(self.szDiff.height+self.szItem.height-1)) / (self.szDiff.height+self.szItem.height) ) + 1;
            [self pushVisionIndexToSet:&setVisionIndex withVSRM:nVisionStartRowMark withVRN:nVisionRowNums withCN:nColNums];
        }
        else
        {
            nVisionStartRowMark = ( ((self.contentOffset.y-self.szItem.height)+(self.szDiff.height+self.szItem.height-1)) / (self.szDiff.height+self.szItem.height) );
            nUpExposeHeight = (nVisionStartRowMark*(self.szDiff.height+self.szItem.height)+self.szDiff.height) - self.contentOffset.y;
            int nLeaveVisionHeight = self.szVision.height - nUpExposeHeight;
            nVisionRowNums = ( (nLeaveVisionHeight+(self.szDiff.height+self.szItem.height-1)) / (self.szDiff.height+self.szItem.height) ) + 1;
            [self pushVisionIndexToSet:&setVisionIndex withVSRM:nVisionStartRowMark withVRN:nVisionRowNums withCN:nColNums];//SV_CLOTHES_COL_NUMS
        }
        
        return setVisionIndex;
    }