作者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