iOS之UITableView組頭組尾視圖/標題頭部懸停

jopen 8年前發布 | 122K 次閱讀 iOS開發 移動開發 UITableView

最近筆者在公司的iOS開發中,有一個iOS開發同事跑來問了兩個問題:1.給UITableView設置了組頭和組尾視圖,但是一直顯示不出來?2.UITableView的section的header和footer視圖,沒有產品經理需要的懸停效果?針對于這2個問題,我詳細的測試了一下,然后得出了如下結論。

針對于問題一,是因為對方創建UITableViewController的時候使用了錯誤的構造方法。如果用導航控制器pushUITableViewController類型的控制器,必須給定UITableView的style。如下所示,錯誤方式和正確方式:

// UITableViewController錯誤創建方式:
    WSTableViewController *tableVC = [[WSTableViewController alloc] init];
    [self.navigationController pushViewController:tableVC animated:YES];

// UITableViewController正確創建方式:
    WSTableViewController *tableVC = [[WSTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
    [self.navigationController pushViewController:tableVC animated:YES];

// 注意:很多初級iOS工程師創建UITableViewController的時候習慣用init,殊不知,UITableViewController與其他控制器不同,需要指定控制器的tableView的style。
// 另外,自定義UITableViewController需要重寫init方法的時候,也不要傻乎乎的重寫init方法,而是需要重寫initWithStyle:方法。

針對于問題二,UITableView的style無論是plain還是grouped樣式,都可以設置組頭組尾視圖(通過代理方法)。但需要注意的是,如果UITableView的style設置為grouped樣式,那么組頭和組尾視圖 沒有 懸停效果。相反,如果UITableView的style設置為plain樣式,那么組頭和組尾視圖 會有 懸停效果。如下圖1為plain樣式下的懸停效果;圖2為grouped樣式下的非懸停效果。(PS:下圖中的UITableView分為3組,每組10行)

圖1                                                                圖2

同理,組頭標題和組尾標題也是如此。下圖3為plain樣式的效果,圖4為grouped樣式的效果。

注意:對于組頭組尾視圖,如果控制器是作為子控制器被push或者modal的。那么如果被push或者modal的UITableViewController為UITableViewStylePlain樣式,那么很遺憾,依舊不會顯示組頭和組尾視圖。所以只能夠設置為UITableViewStyleGrouped樣式。那么問題又來了,組頭組尾視圖是有了,但是不能夠懸停。

對于組頭組尾標題,不管控制器作為子控制器push或者modal出來的。UITableViewController為UITableViewStylePlain樣式,會有懸停效果。如果被push的UITableViewController為UITableViewStyleGrouped樣式,不會有懸停效果。

來自: http://www.cnblogs.com/wsnb/p/5094989.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!