Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]

Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:]

出现这个报错,当时找原因找了半天,网上的资料基本说的是用不用forIndexPath的区别,或者说你没有在前面注册cell。

其实原因都没有找对,或者不适合你的情况。


我出现这个报错导致崩溃的原因是:

我的cell隐藏了分割线,而隐藏分割线的方法写在了创建tableView的时候,而且写在了注册cell方法的前面。

    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, WID, HEI-64) style:UITableViewStyleGrouped];
    _tableView.delegate = self;
    _tableView.dataSource = self;
    _tableView.tableFooterView = [[UIView alloc] init];
   _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [_tableView registerNib:[UINib nibWithNibName:@"SystemCell" bundle:nil] forCellReuseIdentifier:@"systemCellID"];
    [self.view addSubview:_tableView];

 
 

这逻辑上是不对的。 因为这是cell的方法,而你在没注册cell之前隐藏cell的分割线,似乎有点说不通。但实际真机上跑确实不行,将其调到注册cell之后就没问题了。如下:

    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, WID, HEI-64) style:UITableViewStyleGrouped];
    _tableView.delegate = self;
    _tableView.dataSource = self;
    _tableView.tableFooterView = [[UIView alloc] init];

    [_tableView registerNib:[UINib nibWithNibName:@"SystemCell" bundle:nil] forCellReuseIdentifier:@"systemCellID"];
    _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    [self.view addSubview:_tableView];

 
 

所以,最好将隐藏分割线的方法写在

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 此方法里面!


另外,最好不要写在前面的方法还有:

_tableView.sectionHeaderHeight =44;

此方法虽然快捷,但是在tableView类型为UITableViewStyleGrouped的时候,容易引起第一个段头消失,用代理方法写段头高度即可!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值