在寫微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
return
cell;
}
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
return
cell;
}
tableview的重用機制,為了做到顯示和資料分離,ios tableview的實現並且不是為每個資料項建立乙個tablecell。而是只建立螢幕可顯示最大個數的cell,然後重複使用這些cell,對cell做單獨的顯示配置,來達到既不影響顯示效果,又能充分節約內容的目的。
解決方法一:對在cell中新增的控制項設定tag的方法
例如在微博內容中需要新增label,那麼就可以對新增的label設定tag,然後新建cell的時候先remove前乙個cell tag相同的label,再新增新的label,這樣就不會出現cell內容的重疊。
[[cell viewwithtag:
100
] removefromsuperview];
[[cell contentview] addsubview:contentlabel];
解決方法二:刪除cell中的所有子檢視
在實現微博介面中,乙個cell會有多個控制項(label,imageview...),按理說,對每乙個控制項都設定tag,按照第一種解決方法,應該是可以實現的。但是在實際執行過程中發現不行,還是會出現內容重疊的問題,所以採用第二種解決方法--在新建cell的時候,如果不是空就刪除所有的子檢視。
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
else
}
cell.dataarrays=[self.dataarray objectatindex:indexpath.row];
return
cell;
}
解決方法三:通過為每個cell指定不同的重用識別符號(reuseidentifier)來解決。
重用機制是根據相同的識別符號來重用cell的,識別符號不同的cell不能彼此重用。於是我們將每個cell的識別符號都設定為不同,就可以避免cell重用問題了。
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
//...其他**
}
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
//...其他**
}
iOS UITableViewCell重用問題
在寫微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 uit...
iOS UITableViewCell重用問題
微博介面的過程中使用到了cell,那麼就是在cell上新增一些控制項,但是由於每條微博的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。cpp view plain copy print uitableviewcell tablevie...
iOS UITableViewCell重用問題
在實現uitableview的過程中使用到了cell,在cell上新增一些控制項,但是由於每個cell的內容都是不同的,所以在顯示的過程中,出現了內容重疊的問題,其實就是uitableviewcell重用機制的問題。tableview的重用機制,為了做到顯示和資料分離,ios tableview的實...