你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS之UITableView組頭組尾視圖/標題懸停

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

編輯:IOS開發綜合
  • 最近筆者在公司的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樣式,不會有懸停效果。

    1. 上一頁:
    2. 下一頁:
    蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
    Copyright © Ios教程網 All Rights Reserved