UITableView中Cell重用機制導致內容出錯的解決方案

來源:互聯網
上載者:User

UITableView通過重用儲存格來達到節省記憶體的目的:通過為每個儲存格指定一個重用標識符(reuseIdentifier),即指定了儲存格的種類,以及當儲存格滾出螢幕時,允許恢複儲存格以便重用.對於不同種類的儲存格使用不同的ID,對於簡單的表格,一個標識符就夠了.

假如一個TableView中有10個儲存格,但是螢幕上最多能顯示4個,那麼實際上iPhone只是為其分配了4個儲存格的記憶體,沒有分配10個,當滾動儲存格時,螢幕內顯示的儲存格重複使用這4個記憶體。實際上分配的Cell個數為螢幕最大顯示數, 當有新的Cell進入螢幕時,會隨機調用已經滾出螢幕的Cell所佔的記憶體,這就是Cell的重用。

對於多變的自訂cell,這種重用機制會導致內容出錯。為瞭解決這種出錯的,經過反覆的google,終於找到一個適合的方法。就是把原來的

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:defineString];修改為:


UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

這樣就能解決掉cell重用機制導致的問題了。
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.