所以我有一个自定义的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分配单元格。
发生了什么事?
答案 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
将始终返回一个单元格。您需要做的就是配置它。
所以,实际上,你根本不需要这么小的代码块。