有时候tableView刷新,数据变了,新的tableView高度可能变了,如果我们此时下滑了一定距离,刷新数据后tableView回到顶部了,想回到原来位置怎么办呢?
首先知道listView是继承scrollView的,创建出tableView之后,可以通过getInnerContainerSize().height得到tableView的高度,getInnerContainerPosition()得到tableView的位置,,剩下的就是根据新的数据计算出偏移量就可以了。
更新数据之前,先得到当前高度h1 = getInnerContainerSize().height,得到当前位置 pos1 = getInnerContainerPosition().y
更新数据后,先重置tableView,调用reloadData()
重置后,reloadData又回到了最上面,下面计算出新的偏移量就可以了
得到新的高度h2=getInnerContainerSize().height,调用setInnerContainerPosition设置偏移量setInnerContainerPosition(cc.p(0, -h2 + (h1 + pos1))),
-h2 + (h1 + pos1))的计算原理就是原来的位置加上新旧tableView的差值
在调用reloadLayout加载一下就可以了