自定义tableview单元格的xib未显示

时间:2014-01-14 04:12:41

标签: ios objective-c cocoa-touch uitableview

所以我有一个自定义的uitableviewcell,我在cellForRowAtIndexPath方法中有类似的代码

  defaultCell = [self.listView dequeueReusableCellWithIdentifier:DefaultCellIdentifier];
        if(defaultCell){
            defaultCell = [[DefaultCell alloc]init];
        }

传递if并分配和引用默认单元格。但是,单元格显示为空白(xib文件不存在)。我正在用这样的tableview注册nib -

UINib* defaultNib = [UINib nibWithNibName:@"DefaultCell" bundle:nil];
    [self.listView registerNib:defaultNib forCellReuseIdentifier:DefaultCellIdentifier];

那么为什么我在我的表格单元格中得到一个空白视图而不是我在xib文件中看到的?我认为这是因为我没有用它的xib分配单元格。

发生了什么事?

3 个答案:

答案 0 :(得分:0)

更新1 - 代码更正 这是在cellForRowAtIndexPath方法中显示自定义单元格的正确方法 我今天学到了一些东西:

你不需要检查一个单元是否已经出列,因为如果它不能使一个单元出列,该方法将从nib创建一个新的单元格。 - @Abizern,

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    //Set the label's data properties that you may have assuming you have a datasource.
    cell.customLabelICreated.text = [myStringsDataSourceArray objectAtIndexPath:index.row];

答案 1 :(得分:0)

首先为表格视图单元格注册你的笔尖,如下所示:

 [self.tableView registerNib:[UINib nibWithNibName:@"nib name" bundle:nil] forCellReuseIdentifier:DefaultCellIdentifier];
cellForRowAtIndexPath中的

。你不需要明确地分配单元格。

相反,你可以做这样的事情

defaultCell = [self.listView dequeueReusableCellWithIdentifier:DefaultCellIdentifier];

[defaultCell configureCell];//In configure cell method set any images or labels u want.
return defaultCell

希望这会有所帮助..

答案 2 :(得分:0)

这个电话错误有两个原因:

if(defaultCell){
    defaultCell = [[DefaultCell alloc]init];
}

首先,它应该是if(!defaultCell)

其次,如果你为它注册了一个笔尖,甚至不需要检查细胞是否已经出列。在这种情况下,dequeueReusableCellWithIdentifier将始终返回一个单元格。您需要做的就是配置它。

所以,实际上,你根本不需要这么小的代码块。