2011-09-03 98 views
0

我有這樣的一個表:質量標籤的文本

before drag table

幾經時間拖動滾動表中查看它喜歡:

after drag table several times

我子類TTTableMessageItemCell和在亞類中我加了這個:

- (void)prepareForReuse { 
    [super prepareForReuse]; 
    _timeLabel.text = nil; 
    _timeLabel = nil; 
    self.commentTime = nil; 
} 

但不工作... 有什麼不對?


- (void)layoutSubviews { 


    [super layoutSubviews]; 
    self.backgroundColor = TTSTYLEVAR(tableCellColor1); 


    CGSize userNameSize = [self.username sizeWithFont:TTSTYLEVAR(mySubtextFont)]; 


    if (self.username != nil && self.username.length){ 

     self.userNameLabel.text = self.username; 


     self.userNameLabel.frame = CGRectMake(self.imageView2.right + 5.f, self.imageView2.top, userNameSize.width, userNameSize.height); 
    }else{ 
     self.userNameLabel.frame = CGRectZero; 

    } 


self.titleLabel.width, captionSize.height); 
    if (self.typeMessage != nil && self.typeMessage.length){ 

     self.typeMessageLabel.text = self.typeMessage; 

     self.typeMessageLabel.frame = CGRectMake(self.imageView2.right + userNameSize.width + 5.f, kTableCellSmallMargin, self.contentView.width - self.imageView2.right - userNameSize.height - 5.f, userNameSize.height); 
    }else{ 
     self.typeMessageLabel.frame = CGRectZero; 
    } 
} 


- (UILabel*)userNameLabel{ 
    if (self.username != nil && self.username.length) { 
     _userNameLabel = [[[UILabel alloc] init] autorelease] ; 
     _userNameLabel.tag = 107; 
     _userNameLabel.backgroundColor = [UIColor clearColor]; 


     _userNameLabel.font = TTSTYLEVAR(mySubtextFont); 
     _userNameLabel.contentMode = UIViewContentModeLeft; 
     //  _typeMessageLabel.enabled = NO; 
     //  [_typeMessageLabel sizeToFit]; 
     [self.contentView addSubview:_userNameLabel]; 
     _userNameLabel = (UILabel *)[self.contentView viewWithTag:107]; 
    } 
    return _userNameLabel; 
} 

- (UILabel*)typeMessageLabel{ 
    if (self.typeMessage != nil && self.typeMessage.length) { 
     _typeMessageLabel = [[[UILabel alloc] init] autorelease] ; 
     _typeMessageLabel.tag = 105; 
     _typeMessageLabel.backgroundColor = [UIColor clearColor]; 


     _typeMessageLabel.font = TTSTYLEVAR(mySubtextFont); 
     _typeMessageLabel.contentMode = UIViewContentModeLeft; 
//  _typeMessageLabel.enabled = NO; 
//  [_typeMessageLabel sizeToFit]; 
     [self.contentView addSubview:_typeMessageLabel]; 
     _typeMessageLabel = (UILabel *)[self.contentView viewWithTag:105]; 
    } 
    return _typeMessageLabel; 
} 
+0

發佈任何代碼,您在哪裏創建單元格的文本標籤。 – coneybeare

+0

爲您創建標籤的位置添加代碼,而不是調整它。具體來說,添加你添加的代碼子目錄 – coneybeare

+0

我已經添加了,你可以向下滾動添加的代碼,你會看到創建標籤代碼「userNameLabel」和「typeMessageLabel」 –

回答

1

在你userNameLabeltypeMessageLabel方法,要創建每次調用時新標籤,將其添加到細胞的contentView,和你是不是曾經刪除舊的。

你需要讓你的子類有實例變量,並創建只有一次,然後在渲染單元格時只需設置文本

- (UILabel*)userNameLabel{ 
    if (!_userNameLabel) { 
     _userNameLabel = [[[UILabel alloc] init] autorelease]; 
     _userNameLabel.tag = 107; 
     _userNameLabel.backgroundColor = [UIColor clearColor]; 
     _userNameLabel.font = TTSTYLEVAR(mySubtextFont); 
     _userNameLabel.contentMode = UIViewContentModeLeft; 
     [self.contentView addSubview:_userNameLabel]; 
    } 
    return _userNameLabel; 
} 

- (UILabel*)typeMessageLabel{ 
    if (!_typeMessageLabel) { 
     _typeMessageLabel = [[[UILabel alloc] init] autorelease] ; 
     _typeMessageLabel.tag = 105; 
     _typeMessageLabel.backgroundColor = [UIColor clearColor];  
     _typeMessageLabel.font = TTSTYLEVAR(mySubtextFont); 
     _typeMessageLabel.contentMode = UIViewContentModeLeft; 
     [self.contentView addSubview:_typeMessageLabel]; 
    } 
    return _typeMessageLabel; 
} 

然後,在正確的位置設置您單元的對象標籤:中setObject:方法,而不是layoutSubviews方法。方法可以每次繪製多次調用,並且應該只有佈局單元格所需的最小定位邏輯。設置文本,創建項目和其他高成本功能應該在setObject

- (void)setObject:(id)object { 
    [super setObject:object]; 
    … 
    (Do your other content-related setup here, not in layoutSubviews) 
    … 
    if ([self.username length]) 
     _userNameLabel.text = self.username; 
    if ([self.typeMessage length]) 
     _typeMessageLabel.text = self.typeMessage; 
} 

然後在prepareForReuse方法,您可以設置這些標籤的文字是零。

+0

雅,朋友,這對我很有幫助,謝謝〜 –