尝试填充表格时出现此错误:
* 断言失败 - [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
方法。
有人可以帮助我吗?
此外,该表是以编程方式构建的。
谢谢,
彼得
答案 0 :(得分:1)
dequeueReusableCellWithIdentifier:forIndexPath:
预计您之前已为同一nib
(或class
reuseIdentifier
注册prototype cell
或nib
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 UIViewController