UITableView有一个 tableHeaderView和tableFooterView. 一个是tableview的头部,一个是tableview的底部。不同于普通的tableview的sectionheader和sectionfooter。这个头部和底部对整个tableview有效。
固定内容的头部和底部在初始时设置好就可以了。整个tableview会一直有这个头和底。但是如果后来改变了这个header或者footer的大小或者其他属性那么就要重新把这个 header或者footer赋给 tableHeaderView或者tableFooterView一次。
代码如下:
修改了头部:
tableview.tableHeaderView = tableview.tableHeaderView;
修改了底部:
tableview.tableFooterView = tableview.tableFooterView;
看起来是自己把自己的指针给自己赋了一次,在C++中这完全没什么意义,但是在OC中不这样做,那么修改了的头部或者底部就不会更新,就连最简单的改变头部或者底部高度的操作也不会刷新。
猜测是在setTableHeaderView或者setTableFooterView中做了刷新tableview控件的处理。属性赋值会调用对应setter操作,也就是前面的两个函数,这个函数中对tableview的头部进行了刷新。