2012-06-27 173 views
0

非常好奇如何從tableView:cellForRowAtIndexPath:內部處理自定義表格單元格。在cellForRowAtIndexPath中創建自定義的UITableView表格單元格

我在viewDidLoad中實例化一個自定義表格單元格。我的問題是,當沒有可重用的單元格時,我如何處理cellForRowAtIndexPath中的情況?例如,返回搜索結果時。如果需要,我如何創建新的自定義單元格?我在下面列出了相關的方法。

感謝

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //Load custom table cell 
    UINib *customCellNib = [UINib nibWithNibName:@"CustomItem" bundle:nil]; 

    //Register this nib, which contains the cell 
    [[self tableView] registerNib:customCellNib forCellReuseIdentifier:@"CustomItemCell"]; 


    //.... More stuff here 

    } 


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

    CustomItemCell *cell = 
    [tableView dequeueReusableCellWithIdentifier:@"CustomItemCell"]; 

    // If there is no reusable cell of this type, create a new one 
    if (!cell) { 


     //Is this right? 
     cell = [[CustomItemCell alloc] init]; 

    } 




      //Set up cell with data here... 



    return cell; 
} 

回答

0

我最終通過訪問主束,尋找自定義表格單元格榫文件解決這一點。當我們找到我們的自定義表格單元類時,我們將iVar「單元格」分配給該對象。

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

    static NSString *cellID = @"CustomItemCell"; 
    CustomItemCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 

    // If there is no reusable cell of this type, create a new one 

    if(cell == nil){ 


    NSArray *nibObjects = [[NSBundle mainBundle]loadNibNamed:@"CustomCell" owner:nil options:nil]; 
    for (id currentObject in nibObjects) { 
     if([currentObject isKindOfClass:[CustomItemCell class]]) 
     { 
      cell = (CustomItemCell *)currentObject; 

     } 


    } 

    } 
    //Assign data to cell here 
}