作者greatroy (没有昵称)
看板MacDev
标题[问题] cell内label重覆
时间Thu Mar 20 17:22:43 2014
想请教的问题是,Label重覆产生造成画面重叠,
要如何解决?
谢谢
目前方法是:
为避免重覆产生Label,在cellForRowAtIndexPath里
先把所有Label砍光,再产生Label,但实际只砍到textLabel,
而自订的Label在回圈里却找不到。
for (UIView *item in [cell subviews]) {
if ([item isKindOfClass:[UILabel class]]) {
[item removeFromSuperview];
}
}
if (indexPath.row == 1) {
UILabel *subTitle = [[UILabel alloc] initWithFrame:rect];
[subTitle setText:[NSString stringWithFormat:@"%@", _buyDate]];
[cell addSubview:subTitle];
[cell.textLabel setText:@"购入日期"];
[cell setAccessoryType:(UITableViewCellAccessoryDisclosureIndicator)];
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.75.100.65
1F:推 tentenlee:你的height没有设定吧 03/20 17:39
2F:推 NelsonT:你想作什麽功能呢?直觉你现在的作法不太合理... 03/20 21:27
3F:推 hakushadow:你砍的view在cell.contentView 可是你生的在cell本身? 03/21 01:54
4F:→ hakushadow:然後看不到你生cell的地方,也许是被重复生成了? 03/21 01:55
5F:→ greatroy:不好意思可能表达不清,我想做的功能就是 03/21 08:44
7F:→ greatroy:不论是在cell.contentView or cell里,都找不到控制项 03/21 08:47
8F:→ greatroy:可能是我观念有误,请指教 03/21 08:48
9F:→ greatroy:正确方式为何?总之不要造成画面重叠即可 03/21 08:49
※ 编辑: greatroy 来自: 42.75.100.65 (03/21 08:50)
10F:→ greatroy:自言自语..虽然用自订cell的方式可以解决,但究竟错在哪 03/21 15:53
11F:→ whitefur:cell会被重覆使用(reuse), 所以你拿到的cell如果是之前 03/22 12:05
12F:→ whitefur:就已经存在的, 之前就执行过[cell addSubview.... 03/22 12:06
13F:→ whitefur:你再给他一次[cell addSubview....] 03/22 12:07
14F:→ whitefur:不断的一直重覆下去, 就会crash了 03/22 12:07
15F:→ whitefur:tableView跟collectionView的cell都是重覆使用的 03/22 12:07
16F:→ whitefur:你滑动你的tableView後, UIKit会去把不在画面上的cell拿 03/22 12:08
17F:→ whitefur:来重覆使用,所以我们只需要改变里面的资料, 不必每次都 03/22 12:09
18F:→ whitefur:重新产生cell的UI 03/22 12:09
19F:→ howdiun:使用自定义的cell,把要更改值的view加入property 04/02 12:05