TableView不走cellForRowAtIndexPath代理方法

本文总结了TableView的cellForRowAtIndexPath代理方法未被调用的三种常见情况:代理未正确设置、代理被错误覆盖及TableView尺寸配置不当。通过具体实例帮助开发者避免此类问题。

今天突然同事问我,为啥他的tableview走了numberOfRowsInSection代理却不走cellForRowAtIndexPath。这个问题在我刚开始写代码的时候确实遇到过,当时也找了很久,才发现原来是我tableview的frame高度为0,怀疑苹果在代理里面是加了判断的。

现在总结一下,可能出现这种情况的原因有三种:

第一种:tableview的代理没设置

        不用多说,要执行代理,是必须设置delegate,如果delegate没设置,所有代理方法都不会走。

第二种:本视图设置了代理,但是在其他视图有将代理设置给了别的对象。

        这种情况也是会发生的,例如 aView 上添加了 tableview,然后 bView上添加了aView 如果此时,在tableview设置代理给aView(tableview.delegate = aView)在bView中也设置了(bView.aView.tableView.delegate = bView),这样 tableview的只会跑bView中的相关代理,而aView中的代理方法就无效了

第三种:tableview的frame有问题

如文章开头说的,当我们将tableview的高度设置为0的时候,就算有数据,也不会跑cellForRowAtIndexPat代理,而且这种情况比前两种特殊,这个是会走numberOfRowsInSection代理,但不跑cellForRowAtIndexPath。

记录一下平常遇见的问题,也方便大家学习,免得大家踩到坑里,好久才出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值