2012-09-03 139 views
0

我在創建自定義單元格時遇到以下異常。創建自定義UITableViewCell

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MasterTableView 0xb612b30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key address.'

我使用的委託功能如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 

    NSArray *top=[[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil];// on this line program received SIGABRT 

    for (id current in top) { 
     if ([current isKindOfClass:[UITableViewCell class]]) { 
      cell=(CustomCell *)current; 
      break; 
     } 
    } 

} 

// Configure the cell... 
[email protected]"name"; 
[email protected]"Address"; 

return cell; 
} 

除了這個我也做了以下步驟:

  1. 我已經給了CustomCell.xib的文件所有者MasterTableView.h
  2. 我已將自定義單元的出口給MasterTableView.h
  3. 我已經給兩個UILabel小號網點CustomCell.h
  4. 我在下面說明鏈接給出Cell通過小區標識在IB

我有共同在Dropbox的整個項目,可用。你也可以檢查一個。我想知道有什麼錯呢..

Download link

請告訴我缺少的步驟.. 預先感謝您。 PS: - 我在我的項目中使用了CoreData。沒有核心數據,這個步驟給了我正確的期望輸出,但不是在這個項目中。我檢查了默認單元格。它運行良好。

回答

1

我在一個示例項目中編譯並運行了代碼,它完全沒有問題。如前所述,確保你已經在Interface builder中連接了所有的東西!

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 

     NSArray *top = [[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:self options:nil]; 

     for (id current in top) { 
      if ([current isKindOfClass:[UITableViewCell class]]) { 
       cell=(CustomCell *)current; 
       break; 
      } 
     } 
    } 

    cell.title.text = @"Custom cell labels"; 

    return cell; 
} 

編輯:

你在Interface Builder連接兩次IBOutlets,我附上圖片供您參考。他們不應該連接到文件的所有者,從文件的所有者中刪除連接。

您還會注意到行的大小不合適,您必須在表視圖中指定行大小。

enter image description here

+0

我也這樣做了..我不知道發生了什麼..它應該運行..在某些地方我失去了肯定的東西// –

+0

感謝您的確認。 。這對我有很大幫助。讓我再次檢查Interface Builder中的部件。 –

+0

我已經使用核心數據..可以在MainBundle中的問題 - 只是好奇知道。 –

1

在您的自定義單元格xib中,將單元格對象類型更改爲Customcell,將FileOwner類型更改爲NSObject。然後設置單元對象的出口。

+0

我已經做了,問題依然存在,並計劃接收 ' 的NSArray *頂部相同SIGABRT = [[一個NSBundle mainBundle] loadNibNamed:@ 「CustomCell」 老闆:自我選擇:無]。 ' –

+0

你在哪兒叫這個方法?在你的自定義單元類中創建一個靜態方法並在那裏調用它。 –

+0

我已經檢查了空白新項目中的所有步驟,並且它一切正常,但是當我使用核心數據時,這行代碼給了我SIGABRT –

0

檢查您是否已經從屬性設置了您的CustomCell的類。 enter image description here

+0

我已檢查過..我做了正確的..沒有問題.. –