iOS實訓筆記 UITableView預載入

2021-09-24 15:50:12 字數 1568 閱讀 7779

1、載入策略

根據總行數,列表總高度,列表當前偏移值這三個數字決定是否要載入,這裡自定義乙個 protocol判斷是否需要進行載入;

protocol listprefetcherstrategy 

func shouldfetch(_ totalheight:cgfloat, _ offsety:cgfloat) -> bool

}

常見的預載入策略有:

(1)閾值策略:假定預先設定閾值70%,每頁有10個資料,第一頁在載入到 7 個時進行預載入,第二頁在第 17 個時進行預載入,此時閾值為 85%,而如果還是 70%,則會在第 14 個時進行預載入。所以這裡的閾值需要動態增長,該策略適用於我們知道有多少內容,且每頁資料均勻分布;

(2)剩餘策略:定當列表剩餘未展示行數即將少於某個值時,進行載入。這種適合每次分頁數量不一定一致的情況;

(3)除法策略:自己定義除數和餘數,每當達到餘數時,進行載入;

2、uitableview上預載入資料

這裡使用了閾值策略,當瀏覽到80%的資料時,呼叫getdata,非同步地載入資料;

- (void)tableview:(uitableview *)tableview willdisplaycell:(uitableviewcell *)cell forrowatindexpath:(nsindexpath *)indexpath

// 80%出現後,需要去載入資料

if (indexpath.row > self.listarray.count * 0.8)

}

// 建立cell

uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:cellid];

// 獲取資料重新使用cell

cell.textlabel.text = item.name;

cell.detailtextlabel.text = item.download;

// 設定圖示

nsurl *url = [nsurl urlwithstring:item.icon];

nsdata *imagedata = [nsdata datawithcontentsofurl:url];

uiimage *image = [uiimage imagewithdata:imagedata];

cell.imageview.image = image;

新增記憶體快取:

@property (nonatomic, strong) nsmutabledictionary *images;

- (nsmutabledictionary *)images

return _images;

}uiimage *image = [self.images objectforkey:item.icon];

// 如果有值直接拿來用

if(image)else

經過小組討論與彙總,目前客戶端部分的大部分工作已經完成,接下來需要實現伺服器功能;

HTML,CSS實訓筆記

1 html 超文字標記語言 2 html 結構 代表h5 3 常用標籤 3.1 塊級標籤 特點 獨佔一行,前後會主動換行 標題標籤 h1 h6 段落標籤 p 水平線 有序列表 多個 無序列表 div 主要用於分割槽 3.2 行級標籤 特點 按行逐一顯示,不會自動換行 文字類的 加粗 b 斜體 i ...

2017 12 24實訓筆記

敏捷開發 一 迴圈 continue和break 2 break 用來從迴圈體內跳出迴圈,提前結束迴圈,接著執行後面的語句。3 for的用法 for 表示式1 表示式2 表示式3 語句 應用例項 求階乘 c語言命名規則 下劃線,字母,數字 數字不能開頭。二 陣列 重要 1 為什麼要使用陣列 2 c語...

實訓筆記1

actioncontext com.opensymphony.xwork.actioncontext 是action執行時的上下文,上下文可以看作是乙個容器 其實我們這裡的容器就是乙個map而已 它存放放的是action在執行時需要用到的物件,比如 在使用webwork時,我們的上下文放有請求的引數...