TableView不走cellForRowAtIndexPath代理方法

今天突然同事问我,为啥他的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。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,170评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,767评论 8 265
  • 一、简介 <<UITableView(或简单地说,表视图)的一个实例是用于显示和编辑分层列出的信息的一种手段 <<...
    无邪8阅读 10,785评论 3 3
  • Description A snail is at the bottom of a 6-foot well and...
    Gadore千里阅读 484评论 0 0
  • 新的一年有新的开始 希望生活如你所愿 新年快乐 愿岁月予你厚待 一生平安喜乐 愿你新年拥有爱笑的眼睛 阳光...
    若兰丝语阅读 256评论 2 2