我使用.xib文件创建了表单元格。并使用以下代码添加在UITATIONVIEW中:
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
DesplayCell *cell = [tableView dequeueReusableCellWithIdentifier:@"desplayCell"];
if (!cell) {
[tableView registerNib:[UINib nibWithNibName:@"DisplayCell" bundle:nil] forCellReuseIdentifier:@"desplayCell"];
}
//
return cell;
}
应用程序崩溃,错误:
无法从其数据源获得单元格
我忘记在您的代码中添加dequeueReusableCellWithIdentifier
。
dequeuereusablecellewithIdentifier用法
您应该为所有相同形式的单元格使用相同的重用标识符。 重用标识符与具有相同一般配置的表视图的那些单元格(行)关联。
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
DesplayCell *cell = [tableView dequeueReusableCellWithIdentifier:@"desplayCell"];
if (!cell) {
[tableView registerNib:[UINib nibWithNibName:@"DisplayCell" bundle:nil] forCellReuseIdentifier:@"desplayCell"];
cell = [tableView dequeueReusableCellWithIdentifier:@"desplayCell"];
}
//
return cell;
}
您可以像这样使用
在ViewDidload中写下以下代码
[tableView registerNib:[UINib nibWithNibName:@"DisplayCell" bundle:nil] forCellReuseIdentifier:@"desplayCell"];
在CellForrowatIndExpath中您可以在下面写
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
DesplayCell *cell = [tableView dequeueReusableCellWithIdentifier:@"desplayCell"];
if (cell == nil) { // if cell is nil then you can alloc it
cell=[[DesplayCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"desplayCell"];
cell = [tableView dequeueReusableCellWithIdentifier:@"desplayCell"];
}
return cell;
}
答案就像siddhesh mhatre帖子一样
UITATIONVIEW category.h
- (id)dequeueReusableOrRegisterCellWithIdentifier:(NSString *)identifier;
- (id)dequeueReusableOrRegisterCellWithClass:(Class)aClass;
UITATIONVIEW category.m
- (UITableViewCell *)dequeueReusableOrRegisterCellWithIdentifier:(NSString *)identifier{
UITableViewCell *cell = [self dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
[self registerNib:[UINib nibWithNibName:identifier bundle:nil] forCellReuseIdentifier:identifier];
cell = [self dequeueReusableCellWithIdentifier:identifier];
}
return cell;
}
- (UITableViewCell *)dequeueReusableOrRegisterCellWithClass:(Class)aClass{
UITableViewCell *cell = [self dequeueReusableCellWithIdentifier:NSStringFromClass(aClass)];
if (!cell) {
[self registerClass:aClass forCellReuseIdentifier:NSStringFromClass(aClass)];
cell = [self dequeueReusableCellWithIdentifier:NSStringFromClass(aClass)];
}
return cell;
}