看板 MacDev 關於我們 聯絡資訊
想請教的問題是,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
tentenlee:你的height沒有設定吧 03/20 17:39
NelsonT:你想作什麼功能呢?直覺你現在的作法不太合理... 03/20 21:27
hakushadow:你砍的view在cell.contentView 可是你生的在cell本身? 03/21 01:54
hakushadow:然後看不到你生cell的地方,也許是被重複生成了? 03/21 01:55
greatroy:不好意思可能表達不清,我想做的功能就是 03/21 08:44
greatroy:我前幾篇提的http://tinyurl.com/pp9vsmg 03/21 08:46
greatroy:不論是在cell.contentView or cell裡,都找不到控制項 03/21 08:47
greatroy:可能是我觀念有誤,請指教 03/21 08:48
greatroy:正確方式為何?總之不要造成畫面重疊即可 03/21 08:49
※ 編輯: greatroy 來自: 42.75.100.65 (03/21 08:50)
greatroy:自言自語..雖然用自訂cell的方式可以解決,但究竟錯在哪 03/21 15:53
whitefur:cell會被重覆使用(reuse), 所以你拿到的cell如果是之前 03/22 12:05
whitefur:就已經存在的, 之前就執行過[cell addSubview.... 03/22 12:06
whitefur:你再給他一次[cell addSubview....] 03/22 12:07
whitefur:不斷的一直重覆下去, 就會crash了 03/22 12:07
whitefur:tableView跟collectionView的cell都是重覆使用的 03/22 12:07
whitefur:你滑動你的tableView後, UIKit會去把不在畫面上的cell拿 03/22 12:08
whitefur:來重覆使用,所以我們只需要改變裡面的資料, 不必每次都 03/22 12:09
whitefur:重新產生cell的UI 03/22 12:09
howdiun:使用自定義的cell,把要更改值的view加入property 04/02 12:05