1. 程式人生 > >關於cocos tableView的資料重新整理後位置不變

關於cocos tableView的資料重新整理後位置不變

有時候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載入一下就可以了