2011-07-17 122 views
1

我正在爲客戶端編寫iOS應用程序,主視圖是表格視圖,我用文本填充單元格,非常像大多數iOS Twitter客戶端。iOS自定義表格視圖單元格標籤調整大小損壞

我已經創建了一個帶有3個標籤的自定義單元格視圖,並且我用這些文本填充了這些標籤。其中一個標籤需要根據文本數量自動調整大小(最多140個字符)。

這工作正常,直到我滾動向上/向下滾動列表時,文本擴展到一個完整的行(如標籤已擴展)或只佔用部分空間,所以它結束了更深,溢出到其他標籤(我確實有「剪輯子視圖」按照另一個相似的,所以問題啓用)

所以當表和它的數據首先被加載的屏幕看起來像:

before scrolling http://lloydsparkes.co.uk/files/iOS-BeforeScrolling.png

,有點滾動後它看起來像:

after scrolling http://lloydsparkes.co.uk/files/iOS-AfterScrolling.png

因此,看起來標籤在滾動過程中調整大小(可能是由於同一個單元被重用?),而不是調整回正確的大小。

我對填充單元代碼是:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

static NSString *myID = @"customCell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myID]; 

if(cell == NULL) { 

    [[NSBundle mainBundle] loadNibNamed:@"CustomCellView" owner:self options:nil]; 

    cell = customCell; 
    self.customCell = nil; 
} 

Post *p = [posts objectAtIndex:indexPath.row]; 

UILabel *label = (UILabel*)[cell viewWithTag:15]; 
label.text = p.Name; 

label = (UILabel*)[cell viewWithTag:10]; 
label.text = p.Text; 
[label sizeToFit]; 

label = (UILabel*)[cell viewWithTag:20]; 
label.text = [p Source]; 

//[cell layoutSubviews]; 

return cell; 
} 

因此,我是問,是什麼原因造成這個問題?如何解決?

+0

真的能行之前設置label對象的框架回原來的大小(valeu在NIB文件中設置)? 'cell = customCell;''customCell'似乎永遠不會分配給任何東西 –

+0

customCell是我的控制器的屬性,它通過IB連接到實際視圖,所以當Nib被加載時它被附加到該屬性 - 希望我已經解釋正確.... – lloydsparkes

回答

7

sizeToFit方法可能會以奇怪的方式運行,因爲每次調用cellForRowAtIndexPath時都會更改UILabel框架。

一兩件事你可以嘗試正確調用sizeToFit

[label setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 50.0f)];  
[label sizeToFit]; 
+0

作品,輝煌,非常感謝:) – lloydsparkes

+0

奇蹟,雖然意想不到。 –

相關問題