2010-10-12 70 views
1
- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CustomCellIdentifier = @"CustomCellIdentifier"; 

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellIdentifier]; 
    if (cell == nil) 
    { 
     //cell = [[[CustomCell alloc] initwithidentifier:CustomCellIdentifier] autorelease]; 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
     for (id oneObject in nib) 
      if ([oneObject isKindOfClass:[CustomCell class]]) { 
       cell = (CustomCell *)oneObject; 
      } 
    } 

    NSUInteger row = [indexPath row]; 
    NSDictionary *rowData = [self.listData objectAtIndex:row]; 
    cell.nameLabel.text = @"text"; 
    [cell.contentView addSubview: nameLabel]; 
    [cell reloadInputViews]; 

    return cell; 
} 

但名稱標籤不會顯示其新名稱。請問我做錯了什麼? 謝謝!UITableViewCell不顯示數據

+0

什麼是nameLabels框架?此外,您似乎將nameLabel作爲子視圖添加到該單元格中,即使它已經在其中。該代碼應該可能在初始化時位於customcell類中。這也可能是你爲什麼沒有看到任何變化。 – Ben 2010-10-12 14:44:21

+0

我只是爲了試圖查看它是否有所作爲而添加了該行。我不認爲它是需要的 - 既不在這裏也不在初始化 – Lilz 2010-10-12 14:48:31

回答

1

我願意猜測,如果你檢查cell.NameLabel,你會發現它是零 - IBOutlet沒有通過loadNibNamed:owner:options:正確連接。您確定CustomCell將nameLabel作爲適當的出口(即可以通過鍵值編碼到達的出口)嗎?蘋果對此的參考是here,但確保你有一個setter和getter就足夠了。

正如你創建你的NIB,你可能是正確的CustomCell不是文件的所有者?如果它是loadNibNamed:owner:options:顯然不應該在self上調用。如果'self'是真正的所有者,那麼可能更適合擁有指向CustomCellView而不是通過返回數組進行捕魚的IBOutlet(也絕對遵從KVC)。

增加,到下面的評論討論後續:

什麼絕對的工作是創造的UITableViewCell的自定義子類與同樣性能適合IBOutlets,設置你的表視圖的數據源作爲文件所有者和使用loadNib以您的類爲目標加載NIB的新實例,導致您的插口附加了新實例。然後,您可以使用子類的屬性來訪問單元格的各種子視圖。示例項目:here

+0

不,我確實爲標籤創建了適當的出口。此單元格出現 - 沒有任何值,但 – Lilz 2010-10-13 07:09:33

+0

除非相關成員符合KVC,否則不會裝入插座,無論您是否創建了該插座,即使沒有插座,視圖也會顯示。我強烈建議您檢查您是否獲取cell.NameLabel的nil。 – Tommy 2010-10-13 09:37:52

+0

我不知道我是否清楚,單元出現在其中的所有自定義對象。換句話說,我有一個按鈕,一個textview,一個標籤和一個圖像。但是,所有這些項目都是零。由於出現這些出口已正確設置,對嗎? – Lilz 2010-10-13 12:59:56