我看到了類似的問題是問幾乎數十次重疊在下一單元格,但沒有答案的解決我的問題(或者我只是太累了,所以我不回答如下正確)多行標籤滾動時快速
我有一個自定義的細胞的tableview。
細胞看起來像這樣
所述細胞類型ResultsViewCell,它是從定義UITableViewCell衍生的。
單元格中的最後一個標籤是多行單元格。那個有時會與下一個單元格的內容重疊。
這裏是我的cellForRowAtIndexPath功能
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"StandardSearchResultCell";
ResultsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure the cell...
Data *theData = [Data getInstance];
Company *theCompany = [theData.results objectAtIndex:indexPath.row];
cell.lblTitle.text = theCompany.DisplayName;
cell.lblDescription.text = theCompany.Description;
cell.lblAddressPt1.text = theCompany.AddressPt1;
cell.lblAddressPt2.text = theCompany.AddressPt2;
cell.lblPhone.text = theCompany.Phone;
cell.lblEmail.text = theCompany.Email;
cell.lblDescription.adjustsFontSizeToFitWidth = false;
cell.lblDescription.lineBreakMode = UILineBreakModeWordWrap;
cell.lblDescription.numberOfLines = 0;
[cell.lblDescription sizeToFit];
///////////////////////////////////////////
//edit -Added after David H's answer, but it didn't solve the problem
cell.contentView.clipsToBounds = false;
UIFont *cellFont = [UIFont systemFontOfSize:12.0];
CGSize constraintSize = CGSizeMake(270.0f, MAXFLOAT);
CGSize labelSize = [theCompany.Description sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
[cell.contentView setFrame:CGRectMake(cell.contentView.frame.origin.x, cell.contentView.frame.origin.y, 270, 90 + labelSize.height)];
//end of edit
///////////////////////////////////////
return cell;
}
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
Data *theData = [Data getInstance];
Company *theCompany = [theData.results objectAtIndex:indexPath.row];
UIFont *cellFont = [UIFont systemFontOfSize:12.0];
CGSize constraintSize = CGSizeMake(270.0f, MAXFLOAT);
CGSize labelSize = [theCompany.Description sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return (90.0f + labelSize.height);
}
我在做什麼錯?
哈哈,我會試着更注意這一點。如果可以的話,現在請幫助我。爲這個警告投票。 – Eedoh
同意@DavidH答案。但是我很驚訝這段代碼沒有處理deque返回nil的情況。爲了簡潔起見,您是否將其從粘貼中取出? – danh
@丹說得很好 - 我沒有真正看待整個方法。通常你會回收細胞。 –