2012-06-14 25 views
3
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell2"; 
    UILabel *titleLabel; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
     titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, 300, 20)]; 
     [cell.contentView addSubview:titleLabel]; 
     titleLabel.tag = 0011; 
    } 
    else 
    { 
     titleLabel = (UILabel *)[cell.contentView viewWithTag:0011]; 
    } 

    // Configure the cell... 
    NSMutableString *title = [NSMutableString stringWithString:@"Customer: "]; 
    [title appendString:[titles objectAtIndex:indexPath.row]]; 
    titleLabel.text = title.copy; 
    titleLabel.backgroundColor = [UIColor clearColor]; 
    titleLabel.textAlignment = UITextAlignmentLeft; 
    titleLabel.font = [UIFont systemFontOfSize:18.0]; 

我的單元格從來沒有零,我的titleLabel,因爲從來沒有分配,雖然我的單元格生成。我看不出這是可能的。 if狀態從來就不是真的,這應該是第一次生成的細胞,但是我的細胞是按照它們應該的方式創建的,沒有我的標題標記的UITableViewCell分配問題 - 單元格不爲零

+0

你能告訴我爲什麼你的是永遠爲零? – Siam

+0

如果在故事板中有原型單元格,單元格將永遠不會爲零。 – Philip007

回答

5

聽起來好像您正在使用iOS 5(或以後)和故事板。

在iOS 5(或更高版本)下,如果您正在使用Storyboard和TableView控制器,則dequeueReusableCellWithIdentifier:方法將保證返回一個單元格(前提是您已經在Storyboard中定義了具有給定標識符的單元格)。

如果是這種情況,解決方案是完全創建故事板中的自定義表格單元格。轉到故事板中的表格視圖,選擇Content:Dynamic Prototypes並製作Prototype Cells:1。現在以圖形方式佈置您的單元格,以便正是您想要的。現在點擊單元格並設置Identifier:Cell2。您現在不需要在運行時創建標籤或檢查它是否爲零。包括如何引用您設置的標籤的完整詳細信息,請參閱iOS 5發行說明(下面的鏈接)或Web上的許多教程。

請參閱iOS 5發佈說明部分Configuring Table Views

+0

如果是這樣,我需要檢查textLabel是否被創建,所以我只會改變它的值。在這種情況下我應該如何實現它? – Bartu

+0

我不想禁用重用功能,但對於這種用法,我看不到一種方法來實現我自己的自定義單元格。如果我禁用重新使用隊列,我的表看起來很好,但是如果我啓用重用並且不檢查單元格創建或存在,我的標題標籤和其他標籤不斷創建在彼此之上。不知道該怎麼辦... – Bartu

+1

@Bartu如果您使用的是故事板,請在原型中創建並標記您的視圖。當細胞返回時,他們將在那裏。否則,使用自定義單元格子類並在awakeFromNib中添加新視圖。 – jrturton