UITableView整理

基本介紹緩存

 UITableView在 iOS 開發中能夠說是使用最普遍的控件,它有兩種風格:UITableViewStylePlainUITableViewStyleGrouped。這二者操做起來其實並無本質區別,只是後者按分組樣式顯示前者按照普通樣式顯示而已。性能優化

在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屬性能夠對其樣式進行控制。其結構以下:

 

UITableViewCellStuct

 

有時候咱們會發現不少UITableViewCell右側能夠顯示不一樣的圖標,在iOS中稱之爲訪問器,點擊能夠觸發不一樣的事件,例如設置功能:

UITableViewCellAccesoryType

相關文章
相關標籤/搜索