【iOS】UITableView相關

UITableView是UIKit中最重要的一個組件之一,可以用來展示數據列表,也可以用來做頁面布局和開發(fā)專用組件。UITableView的使用遵循MVC模式,從而實現數據模型、視圖、控制器分離。UITableView繼承自UIScrollView,可上下滑動,可以作為根視圖,也可以作為子視圖。與UITableView相關的概念有很多:UITableViewController、UITableViewDelegate、UITableViewDataSource、UITableViewCell等等,下面是一些簡單的介紹。

UITableViewController繼承自UIViewController并遵循UITableViewDelegate和UITableViewDataSource兩個協(xié)議。

UITableViewDelegate遵循UIScrollViewDelegate和NSObject,提供一系列方法來自定義tableView的樣式。

UITableViewDataSource遵循NSObject,提供一系列方法來填充tableView的數據。

UITableViewCell的復用原理

在UITableViewController中創(chuàng)建UITableViewCell時常用到如下方法:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath];

其中的@“reuseIdentifier”就是一個復用標識符,是一個獨一無二的字符串,用來唯一標示某種重復樣式的UITableViewCell,提高加載效率。系統(tǒng)在創(chuàng)建足夠多的Cell后(覆蓋整個tableView),保存并重復這些Cell,避免重復創(chuàng)建和銷毀Cell。UITableView中有兩個數組用來實現這一機制:visiableCells和reuseableTableCells。前者用來保存當前屏幕可見的Cell,后者用來保存那些可以復用的Cell。

一個tableView是否可以關聯(lián)兩個datasource

可以??梢灾苯訉⒍鄠€數據源合并為一個數據源,也可以分別關聯(lián)。

如何對UITableView的滾動加載進行優(yōu)化

對UITableView的滾動優(yōu)化主要在以下兩個方面

減少cellForRowAtIndexPath中的計算量(cell的內容計算):

1、提前計算每個cell中用到的基本數據,調用時直接取出

2、異步加載圖片,之后再填入cell內部的UIImageView

3、圖片數量多時,圖片的尺寸需要經過transform矩陣變化壓縮好,或者只加載預覽圖。

4、圖片懶加載,避免滾動速度過快時頻繁請求數據

5、盡量手動Drawing視圖而不是直接使用UITableViewCell的子類。

減少heightForRowAtIndexPath的計算量(cell的高度計算):

1、如果cell高度固定,可以去掉HeightForRowAtIndex代理,直接設置tableView的rowHeight屬性作為固定高度

2、如果高度不固定,可以將cell的高度提前計算好存儲起來,代理調用時直接取。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容