[問題] cell內label重覆

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

Links booklink

Contact Us: admin [ a t ] ucptt.com