UItableView:改變tableHeaderView大小

前言

最近遇到一個狀況,在原有的tableView上面,必須要增加新的欄位.
這時候有兩個方式:

  • 加入一個Section
  • 使用tableView本身的tableHeaderView去實作

這兩個方法各有優缺,如果增加的不是一行一行的tableView類型,那就得用tableHeaderView去實作。

畢竟tableHeaderView就是獨立的View,我們可以自訂裡面所顯示的內容。

相對的如果是一行一行的tabeleView類型,就可以利用增加Section的方式,

在Section 0這個位置插入一個Section,原本的Section 0往下移變成Section 1。

實作

    But 人生就是這個 But...       

新增的欄位,可能跟原本tableView的欄位資料完全不相干,

這個新增的Section反而成了大麻煩,

要特別為了他改寫TableViewDataSource,TablieViewDeleGate相關function.

甚至cell也要重寫。

因此…

我決定另外設計一個tableView,用來顯示在原本tableView的tableHeaderView.(好繞口)

也就是tableView A的tableHeaderView是tableView B,如此便可以達到完全獨立不會互相影響.

    當tableHeaderView改變大小的時候,原有的tableView還會正常顯示嗎?  

是的,不會!!!! 當tableHeaderView長大的時候,原本tableView的第一列可能會被蓋住!

解決方法:當改變tableHeaderView的大小之後,重新指定給原本的tableView.

參考如下範例:

tableHeaderView change frame
1
2
headerView.frame = CGRectMake(0, 0, CGRectGetWidth(_tev.frame), height);
tableView.tableHeaderView = headerView;

如有興趣可以下載整個Demo專案: tableHeaderViewDemo

參考資料

Resizing a UITableView’s tableHeaderView