[問題] cell內label重覆

看板MacDev作者 (沒有暱稱)時間10年前 (2014/03/20 17:22), 編輯推噓3(3016)
留言19則, 6人參與, 最新討論串1/1
想請教的問題是,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

03/20 17:39, , 1F
你的height沒有設定吧
03/20 17:39, 1F

03/20 21:27, , 2F
你想作什麼功能呢?直覺你現在的作法不太合理...
03/20 21:27, 2F

03/21 01:54, , 3F
你砍的view在cell.contentView 可是你生的在cell本身?
03/21 01:54, 3F

03/21 01:55, , 4F
然後看不到你生cell的地方,也許是被重複生成了?
03/21 01:55, 4F

03/21 08:44, , 5F
不好意思可能表達不清,我想做的功能就是
03/21 08:44, 5F

03/21 08:46, , 6F
我前幾篇提的http://tinyurl.com/pp9vsmg
03/21 08:46, 6F

03/21 08:47, , 7F
不論是在cell.contentView or cell裡,都找不到控制項
03/21 08:47, 7F

03/21 08:48, , 8F
可能是我觀念有誤,請指教
03/21 08:48, 8F

03/21 08:49, , 9F
正確方式為何?總之不要造成畫面重疊即可
03/21 08:49, 9F
※ 編輯: greatroy 來自: 42.75.100.65 (03/21 08:50)

03/21 15:53, , 10F
自言自語..雖然用自訂cell的方式可以解決,但究竟錯在哪
03/21 15:53, 10F

03/22 12:05, , 11F
cell會被重覆使用(reuse), 所以你拿到的cell如果是之前
03/22 12:05, 11F

03/22 12:06, , 12F
就已經存在的, 之前就執行過[cell addSubview....
03/22 12:06, 12F

03/22 12:07, , 13F
你再給他一次[cell addSubview....]
03/22 12:07, 13F

03/22 12:07, , 14F
不斷的一直重覆下去, 就會crash了
03/22 12:07, 14F

03/22 12:07, , 15F
tableView跟collectionView的cell都是重覆使用的
03/22 12:07, 15F

03/22 12:08, , 16F
你滑動你的tableView後, UIKit會去把不在畫面上的cell拿
03/22 12:08, 16F

03/22 12:09, , 17F
來重覆使用,所以我們只需要改變裡面的資料, 不必每次都
03/22 12:09, 17F

03/22 12:09, , 18F
重新產生cell的UI
03/22 12:09, 18F

04/02 12:05, , 19F
使用自定義的cell,把要更改值的view加入property
04/02 12:05, 19F
文章代碼(AID): #1JAhDb0v (MacDev)