带有错误的.xib单元格的UITableView:无法从其dataSource获取单元格

时间:2017-03-11 19:16:42

标签: ios objective-c iphone uitableview

我用.xib文件创建表格单元格。并使用以下代码添加到UITableView中:

-(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;
}

App因崩溃而崩溃:

  

无法从其dataSource获取单元格

3 个答案:

答案 0 :(得分:1)

我忘记在您的代码中添加import Vue from 'vue' import Component from 'vue-class-component' // The @Component decorator indicates the class is a Vue component @Component({ template: '' }) export default class MyComponent extends Vue { }

dequeueReusableCellWithIdentifier使用

  

您应该对同一表单的所有单元格使用相同的重用标识符。   重用标识符与具有相同通用配置,减去单元格内容的表视图的那些单元(行)相关联。

dequeueReusableCellWithIdentifier

}

答案 1 :(得分:0)

你可以这样使用

在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;

}

答案 2 :(得分:0)

答案就像Siddhesh Mhatre post但是你应该创建一个UITableView类,它对大型项目很有用。

<强>的UITableView + Category.h

- (id)dequeueReusableOrRegisterCellWithIdentifier:(NSString *)identifier;
- (id)dequeueReusableOrRegisterCellWithClass:(Class)aClass;

<强>的UITableView + 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;
}