補(bǔ)充 : 取消UITableView組頭或者組尾的粘滯性 https://github.com/PSSDeveloper/bugDemo
之前在公司的iOS開發(fā)中,遇到了兩個(gè)問題:1.給UITableView設(shè)置了組頭和組尾視圖但汞,但是一直顯示不出來宿刮?2.UITableView的section的header和footer視圖,沒有出現(xiàn)需要的懸停效果特占?
針對(duì)于問題一糙置,是因?yàn)閷?duì)方創(chuàng)建UITableViewController的時(shí)候使用了錯(cuò)誤的構(gòu)造方法。如果用導(dǎo)航控制器pushUITableViewController類型的控制器是目,必須給定UITableView的style谤饭。如下所示,錯(cuò)誤方式和正確方式:
// UITableViewController錯(cuò)誤創(chuàng)建方式:
WSTableViewController *tableVC = [[WSTableViewController alloc] init];
[self.navigationController pushViewController:tableVC animated:YES];
// UITableViewController正確創(chuàng)建方式:
WSTableViewController *tableVC = [[WSTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
[self.navigationController pushViewController:tableVC animated:YES];
// 注意:很多初級(jí)iOS工程師創(chuàng)建UITableViewController的時(shí)候習(xí)慣用init,殊不知揉抵,UITableViewController與其他控制器不同亡容,需要指定控制器的tableView的style。
// 另外冤今,自定義UITableViewController需要重寫init方法的時(shí)候闺兢,也不要傻乎乎的重寫init方法,而是需要重寫initWithStyle:方法戏罢。
針對(duì)于問題二屋谭,UITableView的style無論是plain還是grouped樣式,都可以設(shè)置組頭組尾視圖(通過代理方法)龟糕。
但需要注意的是桐磁,如果UITableView的style設(shè)置為grouped樣式,那么組頭和組尾視圖 沒有
懸停效果讲岁。
相反我擂,如果UITableView的style設(shè)置為plain樣式,那么組頭和組尾視圖 會(huì)有
懸停效果缓艳。
如下圖1為plain樣式下的懸停效果校摩;圖2為grouped樣式下的非懸停效果。(PS:下圖中的UITableView分為3組阶淘,每組10行)
同理衙吩,組頭標(biāo)題和組尾標(biāo)題也是如此。下圖3為plain樣式的效果溪窒,圖4為grouped樣式的效果分井。
注意:對(duì)于組頭組尾視圖,如果控制器是作為子控制器被push或者modal的霉猛。那么如果被push或者modal的UITableViewController為UITableViewStylePlain樣式尺锚,那么很遺憾,依舊不會(huì)顯示組頭和組尾視圖惜浅。所以只能夠設(shè)置為UITableViewStyleGrouped樣式瘫辩。那么問題又來了,組頭組尾視圖是有了坛悉,但是不能夠懸停伐厌。
對(duì)于組頭組尾標(biāo)題,不管控制器作為子控制器push或者modal出來的裸影。UITableViewController為UITableViewStylePlain樣式挣轨,會(huì)有懸停效果。如果被push的UITableViewController為UITableViewStyleGrouped樣式轩猩,不會(huì)有懸停效果卷扮。