2012-07-28 35 views
1

非常簡單的問題。在cellForRowAtIndexPath我需要添加一個自定義UILabel。所以我嘗試在給定的方法:UITableViewCell addSubview重複對象

UILabel *titleLbl = [[UILabel alloc] init]; 
//Other properties etc 

if (indexPath.row == 0) titleLbl.text = @"1"; 
else if (indexPath.row == 1) titleLbl.text = @"2"; 

[cell addSubview:titleLbl]; 

問題是,當向下滾動我的表時,標籤開始重複和複製。

我該如何解決這個問題?

謝謝。

回答

3

添加一個標籤作爲一個子視圖在

if (!cell) { 
    cell =...; 
    UILabel *label; 
    label.tag = 1; 
    [cell addSubview:label]; 
} 

UILabel *label = (UILabel*)[cell viewWithTag:1]; 
if (indexPath.row == 0) label.text = @"1"; 

這樣,它纔會被添加在小區被分配。檢索該標籤給它一個標籤,並使用你的單元格的viewWithTag方法

+0

像魔術一樣工作,並允許我添加子視圖而不使用UITableViewCell的子類,非常感謝。 – 2012-07-28 16:43:34

0

這是因爲您的單元格正在被重複使用,並且每次添加標籤時都會這樣。

更好的是子類UITableViewCell中添加UILabel。不要忘了覆蓋prepareForReuse方法,你將標籤的文本設置爲無