断言失败 - [UITableView dequeueReusableCellWithIdentifier:forIndexPath:]错误

时间:2014-03-20 19:42:30

标签: ios objective-c uitableview

尝试填充表格时出现此错误:

  

* 断言失败 - [UITableView dequeueReusableCellWithIdentifier:forIndexPath:]

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NSDictionary *dictionary = tasks[indexPath.row];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = dictionary[@"key"];
    cell.detailTextLabel.text = [Global getPriority:(NSString *)dictionary[@"key_2"]];

    return cell;
}

当我删除forIndexPath时,错误消失但我可以使用- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法。

有人可以帮助我吗?

此外,该表是以编程方式构建的。

谢谢,

彼得

2 个答案:

答案 0 :(得分:1)

dequeueReusableCellWithIdentifier:forIndexPath:预计您之前已为同一nib(或class reuseIdentifier注册prototype cellnib storyboard 1}} / reuseIdentifier再次使用相同的cell。此保证此方法将始终返回有效的单元格,因此如果您正在使用此方法,则无需以编程方式创建dequeueReusableCellWithIdentifier:forIndexPath: dequeueReusableCellWithIdentifier方法。

如果您确实要以编程方式创建单元格,则应使用if (!cell) { cell =... }与{{1}}代码配对。
有关详细信息,请查看this answer

答案 1 :(得分:1)

I faced same issue in my code. what i found was I had accidentally attached delegate of UITableView to view of View controller. Change delegate to UIViewControllerenter image description here