作者Piceman (派斯麵)
看板MacDev
標題Re: [請益] table cell 資料顯示重疊
時間Thu May 23 01:19:04 2013
※ 引述《PurGle (Purple )》之銘言:
: ※ 引述《leepair (leepair)》之銘言:
: : 大家好
: : 為了節省資源ios有提供table cell重覆利用cell的功能,
: : "dequeueReusableCellWithIdentifier", 在開啟這個功能的時候,如果cell里面
: : 用的是內建的label透過IBOutlet作顯示的話比較不會出問題,但如果cell里面包
: : 含了自定的label作內容的顯示時就會出現資料重疊的問題,請問版上大大們有遇
: : 到相同的情況嗎?
: : 謝謝。
: 在使用Tabelview的時候,因為它有Reuse的機制。通常在實作繼承UITableviewCell的
: 客制化Cell中,我習慣補上-(void)prepareForReuse這個UITableviewCell提供的Prot
: ocol(?),在這個Method中我會將會變動的UI Object清空並指向nil,在Reuse時確保
: Cell是一個初始化的狀態,此應用包括在Lazy loading圖片時,將request做取消並重
: 啟的動作。想像一下不取消request,滑過一千個Cell就會有一千個讀圖的Request產生
: 。
: 用Tag也是一個方法可以達到以上目的,就是要多寫一點Code。
: 有錯請指正。
之前也被這問題卡了一陣子
我的解法是作一個array 放 cell
cell內容有變化時,就捨棄重作一個
大致作法
NSArray* cellsArray;
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(cellsArray ==nil)
[self initCellsArray];
return [cellsArray objectAtIndex:indexPath.row];
}
用 tag 的作法沒嘗試過
有人知道哪種作法比較好嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.203.166
→ yuanruo:我好像從來沒遇過資料重複的問題, 你們是都把賦值寫在 05/23 13:05
→ yuanruo:if (cell == nil){ } 中? 05/23 13:06
→ yuanruo:cell == nil 只有一開始初始時顯示螢幕中的cell會進入{ } 05/23 13:07
→ yuanruo:之後都直接reuse同一Cell你寫在裡面 他要複用時資料就重複 05/23 13:09
→ yuanruo:用xib拉Cell可以直接解決重複問題 用手敲程式碼addsubview 05/23 13:21
→ yuanruo:直接在Controller裡寫可以addsubview完就release 或是 05/23 13:22
→ yuanruo:遍歷cell.contectView.subviews 直接removeFromSuperView 05/23 13:24
→ yuanruo:或是建立繼承TableViewCell的子類直接寫在layoutSubvies裡 05/23 13:25
→ Piceman:會用到這作法是因為cell高度可能不一致,這種情況直接reus 05/23 16:28
→ Piceman:e 的話,會有view 重疊問題 05/23 16:28
→ Piceman:你的方法我沒看過,晚點研究一下,謝謝 05/23 16:29