是uiviewcontroller
的子類,
uitableviewcontroller
預設扮演了
3種角色
:檢視控制器、
uitableview
的資料來源和**uitableviewcontroller的
view
是個uitablview,
由uitableviewcontroller
負責設定和顯示這個物件。
uitableviewcontroller
物件被建立後,會將這個
uitableview
物件的datasource
和delegate
指向uitableviewcontroller
自己。
- (id)initwithframe:(cgrect)frame style:(uitableviewstyle)style
// 初始化乙個uitableview,並且設定**樣式
- (void)reloaddata
// 重新訪問資料來源,重新整理介面
- (nsinteger)numberofsections
// 分割槽的個數
- (nsinteger)numberofrowsinsection:(nsinteger)section
// 第section分割槽的行數
- (uitableviewcell *)cellforrowatindexpath:(nsindexpath *)indexpath
// 通過indexpath找到對應的uitableviewcell物件
- (void)setediting:(bool)editing animated:(bool)animated
// 是否要開啟編輯模式
- (void)deselectrowatindexpath:(nsindexpath *)indexpath animated:(bool)animated
// 取消選中某一行,讓被選中行的高亮顏色消失(帶動畫效果)
- (id)dequeuereusablecellwithidentifier:(nsstring *)identifier
// 通過identifier在(快取)池中找到對應的uitableviewcell物件
- (void)deleterowsatindexpaths:(nsarray *)indexpaths withrowanimation:(uitableviewrowanimation)animation
// 移除indexpaths範圍內的所有行
@property(nonatomic,readonly) uitableviewstyle style
//**樣式
@property(nonatomic,assign) id datasource
// 資料來源
@property(nonatomic,assign) id delegate
// **
@property(nonatomic,getter=isediting) bool editing
// 是否為編輯模式
@property(nonatomic) uitableviewcellseparatorstyle separatorstyle
// 設定分隔線的樣式
@property(nonatomic,retain) uicolor *separatorcolor
// 設定分隔線的顏色
@property(nonatomic,retain) uiview *tableheaderview
// 表頭顯示的檢視
@property(nonatomic,retain) uiview *tablefooterview
// 表尾顯示的檢視
@property(nonatomic) bool allowsselection
// 是否允許選中行
@property(nonatomic) bool allowsselectionduringediting
// 是否允許在編輯模式下選中行
@property(nonatomic) bool allowsmultipleselection
// 是否允許選中多行
@property(nonatomic) bool allowsmultipleselectionduringediting
// 是否允許在編輯模式下選中多行
1.資料展示的條件
(1) uitableview
的所有資料都是由資料來源(datasource)提供的,所以要想在uitableview展示資料,必須設定uitableview的datasource資料來源物件
(2)要想當uitableview
的datasource
物件,必須遵守
uitableviewdatasource
協議,實現相應的資料來源方法
(3)當uitableview想要展示資料的時候,就會給資料來源傳送訊息(呼叫資料來源方法),uitableview會根據方法返回值決定展示怎樣的資料
2.資料展示的過程
(1)先呼叫資料來源的
- (nsinteger)numberofsectionsintableview:(uitableview *)tableview
得知一共有多少組
(2)然後呼叫資料來源的
- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section
得知第section組一共有多少行
(3)然後呼叫資料來源的
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
得知第indexpath.section組
第indexpath.row 行顯示怎樣的cell(顯示什麼內容)
3.常見資料來源方法
(1) 一共有多少組
- (nsinteger)numberofsectionsintableview:(uitableview *)tableview
(2)第section組一共有多少行
- (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section
(3)第
indexpath.section組第
indexpath.row
行顯示怎樣的
cell
(顯示什麼內容)
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath
(4)第section組顯示怎樣的頭部標題
- (nsstring *)tableview:(uitableview *)tableview titleforheaderinsection:(nsinteger)section;
(5) 第section組顯示怎樣的尾部標題
- (nsstring *)tableview:(uitableview *)tableview titleforfooterinsection:(nsinteger)section;
4.tableview重新整理資料的方式
(1) 修改模型資料
(2) 重新整理**
* reloaddata --- 整體重新整理(每一行都會重新整理)
* - (void)reloadrowsatindexpaths:(nsarray *)indexpaths withrowanimation:(uitableviewrowanimation)animation ---區域性重新整理
5.效能優化
(1) 定義乙個迴圈利用標識
static nsstring *id = @"c1";
(2) 從快取池中取出可迴圈利用的cell
uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:id];
(3) 如果快取池中沒有可迴圈利用的cell
if (cell == nil)
(4) 覆蓋cell上面的資料
cell.textlabel.text = [nsstring stringwithformat:@"第
%d行資料
", indexpath.row];
IOS學習筆記 UITableView繫結資料例項
首先建立model,新建乙個檔案存放model類 import uikit class testmodel nsobject 在controller中的class外,宣告乙個變數 var list testmodel 為list增加資料 override func viewdidload 將tabl...
iOS開發學習筆記 UITableview
1.工程勾選支援arc 2.利用ib拖乙個uitableview並且連線委託 用uitableview實現簡單的文字和顯示 import inte ce viewcontroller uiviewcontroller property strong,nonatomic iboutlet uitabl...
歸納筆記09 UITableView
uitableview繼承了uiscrollview,它具有uiscrollview的功能,這個uiscrollview中主要封裝了uitableviewcell單元格控制項,因此,uitableview預設可以對單元格進行滾動。預設狀態下,所有的uitableviewcontroller例項被自動...