基本介紹緩存
UITableView在 iOS 開發中能夠說是使用最普遍的控件,它有兩種風格:UITableViewStylePlain和UITableViewStyleGrouped。這二者操做起來其實並無本質區別,只是後者按分組樣式顯示前者按照普通樣式顯示而已。性能優化
在UITableView中數據只有行的概念,並無列的概念,每行數據都是一個UITableViewCell,其內部有一個UIView控件(contentView,做爲其餘元素的父控件)、兩個UILable控件(textLabel、detailTextLabel)、一個UIImage控件(imageView),分別用於容器、顯示內容、詳情和圖片。性能
UITableViewCell提供有四種樣式,分別爲優化
UITableViewCellStyleDefault
左側顯示textLabel(不顯示detailTextLabel),imageView可選(顯示在最左邊)spa
UITableViewCellStyleValue1代理
左側顯示textLabel、右側顯示detailTextLabel(默認藍色),imageView可選(顯示在最左邊)blog
UITableViewCellStyleValue2排序
左側依次顯示textLabel(默認藍色)和detailTextLabel,imageView可選(顯示在最左邊)索引
UITableViewCellStyleSubtitle事件
左上方顯示textLabel,左下方顯示detailTextLabel(默認灰色),imageView可選(顯示在最左邊)
UITableView須要實現UITableViewDataSource和UITableViewDelegate 協議,來實現和外界數據和操做的交互。
數據源
UITableViewDataSource共有三類方法:
(1)配置表視圖
這類方法用來計算 section 和 cell 的數量、section 索引等,以及設置表視圖中的 cell視圖、header/footer 的標題。
根據數據源方法生成單元格的順序是:計算分組數——計算每組行數——生成分組索引——生成單元格
生成單元格的方法並非一次所有調用,而是隻會生產當前顯示在界面上的單元格,當用戶滾動操做時再顯示其餘單元格
(2)插入或修改行
設置是否能夠編輯指定的行,以及設置相應行的編輯樣式。
(3)從新排序
設置可否移動指定的行,以及肯定將要移動到的位置。
代理
UITableViewDelegate共有九類方法:
(1)設置表視圖的行
包括設置行高、預計的行高、行縮進,以及在即將顯示行前要進行的繪製工做。
(2)管理Accessory Views
包括設置editActions(表格行側滑能夠執行的操做)、accessoryButton點擊事件的處理。
(3)管理表格行的選擇
包括willSelect(將要選中)、didSelect(已經選中)、willDeselect(將要放棄選中)、didDeslect(放棄選中)四種狀態,能夠設置在選擇的不一樣狀態,進行不一樣的操做。
(4)修改 section 的 header 和 footer
包括設置 header 和 footer 的高度、預計高度、視圖,以及將要顯示時執行的操做。
(5)編輯表視圖的行
包括willBeginEditing(將要開始編輯)和 didEndEditing(結束編輯)兩種狀態,以及設置行的編輯樣式、刪除確認按鈕的標題、在編輯時是否縮進。
(6)排序
這個方法和數據源方法中的那個的不一樣之處在於:它返回的是目標位置的 indexPath
(7)追蹤視圖的移除
包括設置結束 cell、header 和 footer 顯示後執行的操做三種。
(8)行內容的複製粘貼
包括是否顯示編輯菜單(默認不顯示)、是否執行動做和實行哪一種操做三種。
(9)行的高亮顯示
包括shouldHighlight、didHighlight和didUnhighlight三種。
(10)focus
包括可否突出顯示某行、應該更新突出顯示、已更新顯示某行、突出顯示的行的 indexPath 四種。
性能優化
在UITableView內部有一個緩存池,初始化時使用initWithStyle:(UITableViewCellStyle) reuseIdentifier:(NSString *)方法指定一個可重用標識,就能夠將這個cell放到緩存池。而後在使用時使用指定的標識去緩存池中取得對應的cell而後修改cell內容便可。
UITableViewCell
UITableViewCell是構建一個UITableView的基礎,在UITableViewCell內部有一個UIView控件做爲其餘內容的容器,它上面有一個UIImageView和兩個UILabel,經過UITableViewCellStyle屬性能夠對其樣式進行控制。其結構以下:
有時候咱們會發現不少UITableViewCell右側能夠顯示不一樣的圖標,在iOS中稱之爲訪問器,點擊能夠觸發不一樣的事件,例如設置功能: