2012-07-25 44 views
0

以下代碼用於將tableviewcell從nib文件放入tableview中。我已經把tableviewcell放在與tableview相同的nib中。我曾嘗試初始化viewdidload中的單元格,但沒有去。來自IB的UITableViewCell將值顯示爲NULL

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"identifier"; 
    NSLog(@"the cellidentifier is %@", CellIdentifier); 
    bookmarksTableViewCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    NSLog(@"the cell is %@", bookmarksTableViewCell); 
    return bookmarksTableViewCell; 
} 

的錯誤,我得到的是

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:' 

我已經檢查在IB連接和重新佈線他們太多,但結果出現的相同。當我嘗試NSLog'ing單元格時,它爲空。

+0

您是否將Interface Builder中單元的標識設置爲「indentifier」?我會稱它爲「自定義單元格」或「書籤單元格」或其他標識它的東西。在這裏你要求一個標識符爲「標識符」的單元。 – 2012-07-25 20:16:04

回答

1

你需要做的是,像這樣

static NSString *CellIdenetifier = @"Cell"; 

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

if(cell == nil){ 
    cell = [[BookMarksTableViewCell alloc] initWithStyle:UITableViewCellStyleSubTitle reuseIdentifer:CellIdentifier]; 
} 

林不知道,如果你需要,如果但我想我有它。

+0

字幕只有一個上限。 – 2012-07-25 19:21:05

+0

感謝您的回覆。解決了崩潰問題,但我放入XIB文件中的這個UITableViewCell的圖形元素(如靜態UILabel)沒有顯示出來。相反,我得到空白單元格。有什麼建議麼? – NSFeaster 2012-07-25 19:33:59

+0

你有沒有做過這樣的'cell.labelName.text = @「text」''''這就是你將如何設置標籤的文本。確保它在筆尖中正確連接。還要確保你使用'@屬性'在h和'合成'在米爲那個標籤 – BigT 2012-07-25 19:37:59

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


    static NSString *CellIdentifier = @"identifier"; 
    NSLog(@"the cellidentifier is %@", CellIdentifier); 

    bookmarksTableViewCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (bookmarksTableViewCell == nil){ 
      //allocate your cell here 
    } 

    return bookmarksTableViewCell; 
+0

感謝您的回覆。解決了崩潰問題,但我放入XIB文件中的這個UITableViewCell的圖形元素(如靜態UILabel)沒有顯示出來。相反,我得到空白單元格。有什麼建議麼? – NSFeaster 2012-07-25 19:33:49

+0

設置一個獨特的標籤(9876或隨機但唯一的東西)到IB中的該uilabel。在你的cellForRow做UILabel * theLabel =(UILabel *)[bookmarksTableViewCell viewWithTag:9876]。然後做任何你想做的與標籤 – 2012-07-25 20:16:25

+0

我現在完全不同的方法做了代碼,它現在似乎工作得很好。感謝您的幫助。 – NSFeaster 2012-07-26 06:40:54

1

當然它是空的。

如果表視圖需要顯示比在其隊列中有可用多種細胞,它從

dequeueReusableCellWithIdentifier: 

返回nil問數據源,直到細胞的足量被分配創建一個新的小區。檢查NULL:

bookmarksTableViewCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
if (bookmarksTableViewCell == NULL) 
    bookmarksTableViewCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStylePlain reuseIdentifier:cellIdentifier] autorelease]; 

return cell; 

啊,ps:忘了Interface Builder。

+0

感謝您的回覆。現在錯誤消失了,但在tableview中顯示的單元格沒有任何標籤,背景顏色或任何其他圖形屬性,我放入tableviewcell。 – NSFeaster 2012-07-25 19:18:36

+0

您需要手動設置它們。管理這件事遠遠超出了IB的範圍。如果你想編程,在某些時候你最終需要手工輸入代碼。我想這個時間已經來臨了。 – 2012-07-25 19:20:02

+0

^感謝您的回覆。我通常手工完成所有cellForRowAtIndexPath編碼,但是這一次我想試試IB的UITableViewCell對象,因爲它可以很方便,考慮到我在這個tableviewcell中會有很多圖形元素,管理它們都會非常麻煩。我可以問,考慮到IB有UiTableViewCell對象,您認爲它超出了IB的範圍?謝謝。 – NSFeaster 2012-07-25 19:27:20

相關問題