2012-08-18 66 views
0

我有我的自定義UITableViewCell一個非常奇怪的問題。我在Interface Builder中有一個標識爲「ThreadCell」的單元格,並帶有一些自定義標籤。這些標籤被標記,以便我可以訪問它們。自定義的UITableViewCell不繪製Corectly

在我的代碼,我做了以下內容:

static NSString *CellIdentifier = @"ThreadCell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if(cell == nil){ 
    cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: @"ThreadCell"]; 
} 

Person *person = [self.people objectAtIndex: indexPath.row]; 
UILabel *nameLabel = (UILabel *)[cell viewWithTag: 0]; 
nameLabel.text = person.nickname; 

return cell; 

這似乎很好地工作,但有一個例外。該畫的TableView這樣的:

Cells

這顯然不是我的自定義單元格。但奇怪的是,當我在電池接頭,我得到這個:

Cells

我的自定義單元格,繪製背後默認的單元格。 什麼?!我不確定這是怎麼發生的,因爲我從來沒有在任何地方設置過textview的標題,所以我不確定第一個約翰史密斯從哪裏來。

任何人有任何想法?

回答

1

在您的代碼中,您分配一個普通的UITableViewCell而不是您的自定義單元格的實例。在initWithStyle中設置reuseIdentifier不足以加載自定義單元類的實例。

如果您爲iOS 5及更高版本開發,則可以使用registerNib:forCellReuseIdentifier:註冊包含您的自定義單元的NIB文件。然後dequeueReusableCellWithIdentifier:將始終返回該NIB的一個實例。

+0

謝謝。我的主要故事板中有自定義單元格。我應該將細胞分離出它自己的Nib嗎? –

+0

@AndrewM:我認爲使用Storyboard更簡單:將表視圖的原型單元格的「標識符」設置爲「ThreadCell」。那麼你不需要'registerNib:...'電話。 –

+0

就是這樣 - 我已經做到了。 –