当两个section的cell数量都为5的时候,方法的调用顺序:

-[ViewController numberOfSectionsInTableView:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 1
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 0

-[ViewController numberOfSectionsInTableView:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 1
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 0

-[ViewController numberOfSectionsInTableView:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 1
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 0

-[ViewController tableView:cellForRowAtIndexPath:], section = 0, row = 0
-[ViewController tableView:cellForRowAtIndexPath:], section = 0, row = 1
-[ViewController tableView:cellForRowAtIndexPath:], section = 0, row = 2
-[ViewController tableView:cellForRowAtIndexPath:], section = 0, row = 3
-[ViewController tableView:cellForRowAtIndexPath:], section = 0, row = 4
-[ViewController tableView:cellForRowAtIndexPath:], section = 1, row = 0
-[ViewController tableView:cellForRowAtIndexPath:], section = 1, row = 1
-[ViewController tableView:cellForRowAtIndexPath:], section = 1, row = 2
-[ViewController tableView:cellForRowAtIndexPath:], section = 1, row = 3
-[ViewController tableView:cellForRowAtIndexPath:], section = 1, row = 4
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]

以下会调用三次

返回section的num
{
最后一个section
返回section的header
返回section的footer
返回section的行数
从第一个section开始
返回section的header
返回section的footer
返回section的行数
}

section的数量  返回section的num{} 返回section的num{}的调用顺序 最后调用header、footer的次数
        1 三次 0 一组
        2 三次 1、0 两组
        3 三次 2、0、1 三组
        4 三次 3、0、1、2 四组
        5 三次 4、0、1、2、3 四组
        6 三次 5、0、1、2、3、4 四组

问题一:为什么到section数量4以后,最后调用header、footer的次数的次数都为4

解决:在屏幕大小内绘制tableView,绘制多少内容,调用相应方法(如果一个section只露出一个header和几个cell,那么会先调用header,然后调用 tableView:cellForRowAtIndexPath:方法)

   在设置的section内容之后,当前模拟器只能显示三个section(第三个section只有header露出来一点点,创建第一行cell和第二行cell,创建header和footer)

向下滑动,cell出现时,创建屏幕下下行cell(第一行cell出现,创建第三行cell)

  section的倒数第二行cell出现时,不创建

  section的最后一行cell的分界线出现时,创建下一个section的header

  section最后一行cell出现时,先创建下一个section的第一行cell,然后创建section的footer

  footer出现,不创建

下一个section的header出现时,创建下一个section的第二行cell

第一行cell出现时,创建第3行cell;

向上滑动,cell出现时,创建上一行cell(第二行cell出现,创建第一行cell)

  第二行cell出现,创建第一行cell

  第一行cell出现,不创建(plain模式,header还在头部)

  header被拖动,footer将出现时,创建footer

  footer出现,不创建

  header将出现时,创建上一个section的最后一行cell,然后创建header

  最后一行cell出现,创建倒数第二行;

问题二: 为什么“返回section的num{}”这一组方法每次都是调用三次?

tableView创建方法调用的研究的更多相关文章

  1. abap对象的创建和调用。方法调用

    1: abap中创建类和创建对象,调用方法. *&---------------------------------------------------------------------* ...

  2. 03_java基础(四)之方法的创建与调用

    import org.junit.Test; public class Main { public static void main(String[] args) { System.out.print ...

  3. 使用Swift开发iOS项目、UI创建、方法调用

    //1.root控制器的创建        var rootCtrl =RootViewController()        var root:UINavigationController =UIN ...

  4. java类.方法创建.继续调用

    1.ctrl +n 创建类(首字母大写) 2.alt +s 选倒数第二个 创建方法(Superclass) 3.alt +s 选倒数第三个 创建带参数的方法(using fileds) 4.创建的vo ...

  5. spring声明式事务 同一类内方法调用事务失效

    只要避开Spring目前的AOP实现上的限制,要么都声明要事务,要么分开成两个类,要么直接在方法里使用编程式事务 [问题] Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring ...

  6. [转]Java远程方法调用

    Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...

  7. tableview 代理方法详解

    typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) { UITableViewCellAccessoryNone, // 不显示任何图标 ...

  8. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库

    使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...

  9. spring声明式事务 同一类内方法调用事务失效(转)

    原文 https://blog.csdn.net/jiesa/article/details/53438342 [问题] Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring ...

随机推荐

  1. JavaScript的应用

    DOM, BOM, XMLHttpRequest, Framework, Tool (Functionality) Performance (Caching, Combine, Minify, JSL ...

  2. JAVA存取对象属性时,如果开程多线程,记得对相关存取方法作原子化操作定义

    最显著的应用当然是银行存款和取款,不要存在存取数字和实际发生不一样的情况. synchronized关键字. class BankAccount { private int balance = 100 ...

  3. 普通table表格样式及代码大全(全)

    普通table表格样式及代码大全(全)(一) 单实线边框表格 <TABLE style="BORDER-COLLAPSE: collapse" borderColor=#00 ...

  4. php pack、unpack、ord 函数使用方法

    string pack ( string $format [, mixed $args [, mixed $... ]] ) Pack given arguments into a binary st ...

  5. phpMyAdmin <= 4.0.4.1 import.php GLOBALS变量注入漏洞

    漏洞版本: phpMyAdmin <= 4.0.4.1 漏洞描述: CVE(CAN) ID: CVE-2013-4729 phpmyadmin是MySQL数据库的在线管理工具,主要功能包括在线创 ...

  6. [Poetize II]太鼓达人

    描述 Description 鼓的主要元件是M个围成一圈的传感器.每个传 感器都有开和关两种工作状态,分别用1和0表示.显然,从不同的位置出发沿顺时针方向连续检查K个传感器可以得到M个长度为K的01串 ...

  7. -_-#【jQuery插件】Colorpicker 颜色选择器

    Spectrum - The No Hassle jQuery Colorpicker (jQuery 插件) Color Picker jQuery plugins (jQuery 插件) colo ...

  8. 数据结构(RMQ):POJ 3624 Balanced Lineup

    Balanced Lineup   Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always li ...

  9. 【模拟】Codeforces 699A Launch of Collider

    题目链接: http://codeforces.com/problemset/problem/699/A 题目大意: 给N个点,向左或向右运动,速度均为1,问最早什么时候有两个点相撞.无解输出-1 题 ...

  10. Fragmen横竖屏切换,导致页面混乱,oncreateView重复调用

    在清单文件Activity设置属性 android:screenOrientation="landscape" android:configChanges="screen ...