Re: [請益] table cell 資料顯示重疊

看板MacDev作者 (派斯麵)時間12年前 (2013/05/23 01:19), 編輯推噓0(0011)
留言11則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

05/23 13:05, , 1F
我好像從來沒遇過資料重複的問題, 你們是都把賦值寫在
05/23 13:05, 1F

05/23 13:06, , 2F
if (cell == nil){ } 中?
05/23 13:06, 2F

05/23 13:07, , 3F
cell == nil 只有一開始初始時顯示螢幕中的cell會進入{ }
05/23 13:07, 3F

05/23 13:09, , 4F
之後都直接reuse同一Cell你寫在裡面 他要複用時資料就重複
05/23 13:09, 4F

05/23 13:21, , 5F
用xib拉Cell可以直接解決重複問題 用手敲程式碼addsubview
05/23 13:21, 5F

05/23 13:22, , 6F
直接在Controller裡寫可以addsubview完就release 或是
05/23 13:22, 6F

05/23 13:24, , 7F
遍歷cell.contectView.subviews 直接removeFromSuperView
05/23 13:24, 7F

05/23 13:25, , 8F
或是建立繼承TableViewCell的子類直接寫在layoutSubvies裡
05/23 13:25, 8F

05/23 16:28, , 9F
會用到這作法是因為cell高度可能不一致,這種情況直接reus
05/23 16:28, 9F

05/23 16:28, , 10F
e 的話,會有view 重疊問題
05/23 16:28, 10F

05/23 16:29, , 11F
你的方法我沒看過,晚點研究一下,謝謝
05/23 16:29, 11F
文章代碼(AID): #1HdFuA2C (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1HdFuA2C (MacDev)