带有.xiB单元格的UaiteView错误:无法从其数据源中获得单元格



我使用.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;
}

相关内容

  • 没有找到相关文章