我發現UITableViewHeaderFooterView重用性必須建立在至少有一組存在行資料的時候。而無關于執行
[self.tableView reloadData];
還是
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:headView.tag] withRowAnimation:UITableViewRowAnimationAutomatic];
有圖為證:

當圖中這種情況滾動串列或者是展開關閉其他的組,都能夠達到不創建新的headerView的效果。

如圖中就沒有出現創建新的headerView的列印資訊。
而如果是下圖這種所有組都是關閉的(沒有一行cell顯示出來):

滾動tableView或者打開關閉任意一組時就會控制臺列印如下資訊:

如圖可以看出headView沒有達到重用的效果.
最后可得出結論:
UITableViewHeaderFooterView重用必須基于UITableView至少有一個cell顯示出來。
uj5u.com熱心網友回復:
問題太長沒有細看,但是我可以跟你分享一下我理解的UITableView的復用機制.舉例cell,蘋果封裝了兩個set集合,一個是正在使用中的set.一個是空閑的set.當要顯示一個cell時,從空閑的set中取一個物件,如果沒有,那么就創建一個新的 ,并且把新的物件放到正在使用的set中,當tableview reload的時候,會把正在使用中set的所有物件都移動到空閑set中,然后再顯示.大概的復用流程是這樣的.希望對你有所幫助.交流互動Q:2224080408
uj5u.com熱心網友回復:
如果沒有影響性能,就不拘一格。uj5u.com熱心網友回復:
1.你是否在重用之前注冊重用,2footer header 的使用量沒有cell 這么大,即使不重用,在現在的手機配置下,也算是很少的消耗了,除非你拿 header footer 當cell 來用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/70212.html
標籤:iOS
下一篇:Android 10圖片壓縮
