iOS 坑点 Assertion failure in - UITableView dequeueReusableCellWithIdentifier:forIndexPath:

*** Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-3347.44.2/UITableView.m:6245

- (void)setupTableView
{
    self.tableView.tableHeaderView = self.header;

 

  // 执行该行代码时,会执行 tableView: cellForRowAtIndexPath:方法,最终崩溃在tableView dequeueReusableCellWithIdentifier:kMyCustomCellId1 forIndexPath:indexPath, 以后尽早注册tableView的cell
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];


    [self registerCells];  // 把该代码放在 [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];之前就能解决此问题
}

- (void)registerCells
{
    [self.tableView registerClass:[MyCustomCell1 class] forCellReuseIdentifier:kMyCustomCellId1];
    [self.tableView registerClass:[MyCustomCell2 class] forCellReuseIdentifier:kMyCustomCellId2];
}

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyBaseCustomCell *cell;
    if (indexPath.item % 2 == 0) {
//        cell = [tableView dequeueReusableCellWithIdentifier:kMyCustomCellId1];
        cell = (MyCustomCell1 *)[tableView dequeueReusableCellWithIdentifier:kMyCustomCellId1 forIndexPath:indexPath];
    } else {
//        cell = [tableView dequeueReusableCellWithIdentifier:kMyCustomCellId2];
        cell = (MyCustomCell2 *)[tableView dequeueReusableCellWithIdentifier:kMyCustomCellId2 forIndexPath:indexPath];
    }
    return cell;
}

另外一个坑点,如果 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 返回的是Nil, 则会包这个错,例如如果用这个 cell = [tableView dequeueReusableCellWithIdentifier:kMyCustomCellId1];实现数据源方法,则会报此错误

*** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-3347.44.2/UITableView.m:7524

 

转载于:https://www.cnblogs.com/oumygade/p/4756301.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值