2013-04-05 63 views
1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"CustomCell"; 
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 
} 
[email protected]"date"; 
cell.cellDescription.text [email protected]"Description"; 
cell.cellImageview.image = [UIImage imageNamed:@"sample.png"]; 
cell.cellTitle.text = @"Title"; 
NSLog([cell Description]); 
return cell; 

}我想創建CustomCell但它給一些錯誤,如何解決它?錯誤描述如下

NSLog([cell Description]); 

返回null

以上就是我的方法它提供了以下錯誤: 這裏

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

+0

分配您的自定義單元格里面如果(細胞==零){} – NANNAV 2013-04-05 09:24:26

+0

什麼@vitality正顯示出你是正確的。底線是你需要初始化一個新的細胞。因此,在'(cell == nil)'之後,只需插入以下這行:'cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];' – Lefteris 2013-04-05 09:25:22

回答

3

您還沒有分配內部的新小區的如果(cell == nil)位。您需要分配一個新的UITableViewCell才能返回。

去排隊的工作方式是:

  1. 問表視圖可重複使用的電池與CellIdentifier

  2. 如果電池是零,然後使用您的CellIdentifier所以分配一個新的細胞它可以在未來重新使用。

所以,你可以去是這樣的:

static NSString *CellIdentifier = @"CustomCell"; 
//Ask for a cell with the cell identifier 
CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

//If the cell is nil 
if (cell == nil) 
{ 
//Allocate a new cell with the identifier 
    cell = [[CustomCell alloc] init];//put your actual init method here 
} 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
{ 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
} 
[email protected]"date"; 
cell.cellDescription.text [email protected]"Description"; 
cell.cellImageview.image = [UIImage imageNamed:@"sample.png"]; 
cell.cellTitle.text = @"Title"; 
NSLog([cell Description]); 
return cell; 

希望這有助於

+0

geting這個錯誤代碼實現了新代碼:架構i386的未定義符號: 「_OBJC_CLASS _ $ _ CustomCell」引用來自: MasterViewController.o中的objc-class-ref 未找到架構i386的ld:symbol(s) clang:錯誤:linker命令失敗,退出代碼1(使用-v查看調用) – 2013-04-05 10:02:34

+0

perfoming這不能將CustomCell.xib加載到tableview單元中你有什麼想法 – 2013-04-05 10:52:41

1

更改此:

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

if (cell == nil) { 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 
} 

要:

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

if (cell == nil) 
{ 
    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 
} 
+1

你確實顯示了完全相同的東西,只是你添加了一個額外的檢查'cell == nil',這總是會變成nill – Lefteris 2013-04-05 09:21:06

+0

CustomCell * cell = nil;使每次在表視圖中創建一個新的單元格,它不會重用單元格.. – NANNAV 2013-04-05 09:22:55

+0

這將始終返回零 - 你在某些時候需要分配與重用標識符的單元格。如果可能的話,tableview收集這些並重新使用它們,但如果它需要一個新的單元格,那麼你需要分配它。 – 2013-04-05 09:23:02

0
enter code here// Customize the appearance of table view cell 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"CustomCell"; 
    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier: CellIdentifier]; 

if (cell == nil) 
{ 
    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

} 

[email protected]"date"; 
cell.cellDescription.text [email protected]"Description"; 
cell.cellImageview.image = [UIImage imageNamed:@"sample.png"]; 
cell.cellTitle.text = @"Title"; 
return cell; 


} 

不要忘記添加customcell的.m文件在編譯源標籤

相關問題