當兩個section的cell數量都爲5的時候,方法的調用順序:spa
-[ViewController numberOfSectionsInTableView:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 1
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 0it
-[ViewController numberOfSectionsInTableView:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 1
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 0io
-[ViewController numberOfSectionsInTableView:]
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 1
-[ViewController tableView:titleForHeaderInSection:]
-[ViewController tableView:titleForFooterInSection:]
-[ViewController tableView:numberOfRowsInSection:], section = 0table
-[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:]方法
如下會調用三次tab
返回section的num
{
最後一個section
返回section的header
返回section的footer
返回section的行數
從第一個section開始
返回section的header
返回section的footer
返回section的行數
}co
section的數量 | 返回section的num{} | 返回section的num{}的調用順序 | 最後調用header、footer的次數 |
1 | 三次 | 0 | 一組 |
2 | 三次 | 一、0 | 兩組 |
3 | 三次 | 二、0、1 | 三組 |
4 | 三次 | 三、0、一、2 | 四組 |
5 | 三次 | 四、0、一、二、3 | 四組 |
6 | 三次 | 五、0、一、二、三、4 | 四組 |
問題一:爲何到section數量4之後,最後調用header、footer的次數的次數都爲4header
解決:在屏幕大小內繪製tableView,繪製多少內容,調用相應方法(若是一個section只露出一個header和幾個cell,那麼會先調用header,而後調用 tableView:cellForRowAtIndexPath:方法)ab
在設置的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{}」這一組方法每次都是調用三次?