你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> 蘋果開發中segment control控制table view切換

蘋果開發中segment control控制table view切換

編輯:IOS7技巧
項目中的文章列表分為最新和最熱兩個列表,格式完全一樣,需要在一個頁面上切換兩個列表的顯示,下面我們一起來看一個站長寫的經驗吧。

方案一:

一個tableview,三個數據數組(一個最新,一個最熱,一個指針引用),然後用segment切換來控制tableview的加載數據,切換時用reloaddata重新加載需要顯示的數據。需要說明tableview加了下拉刷新的功能。
實現:功能已實現。

問題:

切換時重新加載內容,徒增性能損耗;

    因為cell中有作者頭像,是從互聯網上加載的,因此每次重新加載tableview時都重新下載一遍頭像,這對流量無端的損耗是不可饒恕的,是注定要被用戶拋棄的。即使使用了異步加載,圖像緩存技術,但是這個隱患還是很大。

    滾動位置在切換時丟失,這個丟失是對用戶體驗而言的。實際是兩個數據源大小不同,tableview的顯示位置固定,影響用戶體驗。

    下拉刷新完成後也會重新加載內容,如果刷新中切換頁面,可能導致刷新內容丟失,或者刷新提示混亂。
    試圖解決方案:在界面上創建兩個tableview實例,因為兩個列表內容格式和顯示樣式完全一致,因此復用默認的tableview,最恰當。因此我就希望用深度復制的辦法創建一個新的實例,這樣兩個tableview互不影響,又達到復用的目的,但是遺憾的是復制實例,報錯,貌似不支持。

方案二:

順著方案一的思路,在界面上方兩個tableview,為了復用性,我們在storyboard上的view上拖一個tableview,綁定自定義的blogtableview類。界面會自動創建一個tableview,我們在界面初始化函數中再創建一個blogtableview實例,因為這個類綁定了界面,因此實例後就能復用了界面上的格式和布局了(我是這麼認為的,剛好用這個方案驗證類和界面綁定的關系),我們把刷新函數和數據源,代理函數全放在自定義類中,徹底分離兩個列表實例。主界面類只負責tableview實例創建和界面切面的工作。這樣原來一個類實現的功能就要放到一個控制類一個業務類中了,其實我覺得這個分離是合理優化。
實現:等下了火車驗證。
方案三:

在界面上拖兩個tableview,格式和布局完全一樣,這種方案我是接受不了的。

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