tableView下拉加载
请问有经验的大神们,我现在想让tableView存聊天记录,只显示10条,下拉一下刷新,加载10条,一直到聊天记录显示完。在网上找了demo用。EGORefreshTableHeaderView。应该很多人都用过,但是用这个demo只能下拉刷新,我是想下拉一次加载10个,数据源是存在数据库里的存取没有问题。 tableView 下拉 加载
[解决办法]
以下代码是我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;
}