作者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
1F:→ yuanruo:我好像从来没遇过资料重复的问题, 你们是都把赋值写在 05/23 13:05
2F:→ yuanruo:if (cell == nil){ } 中? 05/23 13:06
3F:→ yuanruo:cell == nil 只有一开始初始时显示萤幕中的cell会进入{ } 05/23 13:07
4F:→ yuanruo:之後都直接reuse同一Cell你写在里面 他要复用时资料就重复 05/23 13:09
5F:→ yuanruo:用xib拉Cell可以直接解决重复问题 用手敲程式码addsubview 05/23 13:21
6F:→ yuanruo:直接在Controller里写可以addsubview完就release 或是 05/23 13:22
7F:→ yuanruo:遍历cell.contectView.subviews 直接removeFromSuperView 05/23 13:24
8F:→ yuanruo:或是建立继承TableViewCell的子类直接写在layoutSubvies里 05/23 13:25
9F:→ Piceman:会用到这作法是因为cell高度可能不一致,这种情况直接reus 05/23 16:28
10F:→ Piceman:e 的话,会有view 重叠问题 05/23 16:28
11F:→ Piceman:你的方法我没看过,晚点研究一下,谢谢 05/23 16:29