UITableView的詳細講解

2021-06-08 08:00:49 字數 4123 閱讀 1423

1.    uitableview的初始化

[csharp]view plain

copy

uitableview tableview= [[uitableview alloc] initwithframe:cgrectmake(0, 0, 320, 420)];  

[tableview setdelegate:self];  

[tableview setdatasource:self];  

[self.view addsubview: tableview];  

[tableview release];  

(1)

在初始化uitableview的時候必須實現uitableview的是,在.h檔案中要繼承uitableviewdelegate和uitableviewdatasource,並實現3個uitableview資料來源方法和設定它的delegate為self,這個是在不直接繼承uitableviewcontroller實現的方法。

(2)直接在xcode生成專案的時候繼承uitableviewcontroller的,它會幫你自動寫好uitableview必須要實現的方法。

(3)uitableview繼承自uiscrollview。

2.    uitableview的資料來源

(1)uitableview是依賴外部資源為新**單元填上內容的,我們稱為資料來源,這個資料來源可以根據索引路徑提供**單元格,在uitableview中,索引路徑是nsindexpath的物件,可以選擇分段或者分行,即是我們編碼中的section和row。

(2)uitableview有三個必須實現的核心方法,分別如下:

-(nsinteger)numberofsectionsintableview:(uitableview*)tableview;

這個方法可以分段顯示或者單個列表顯示我們的資料。如下,左邊為分段顯示,右邊為單個列表顯示:

-(nsinteger)tableview:(uitableview*)tableviewnumberofrowsinsection:(nsinteger)section;

這個方法返回每個分段的行數,不同分段返回不同的行數可以用switch來做,如果是單個列表就直接返回單個你想要的函式即可。

-(uitableviewcell*)tableview:(uitableview*)tableviewcellforrowatindexpath:(nsindexpath *)indexpath;

這個方法是返回我們呼叫的每乙個單元格。通過我們索引的路徑的section和row來確定。

3.    uitableview的委託方法

使用委託是為了響應使用者的互動動作,比如下拉更新資料和選擇某一行單元格,在uitableview中有很大這種方法供我們選擇。

(1) 委託方法講解

[csharp]view plain

copy

//設定section的數量

- (nsarray *)sectionindextitlesfortableview:(uitableview *)tableview  

//設定每個section顯示的title

- (nsstring *)tableview:(uitableview *)tableviewtitleforheaderinsection:(nsinteger)section  

//指定有多少個分割槽(section),預設為1

- (nsinteger)numberofsectionsintableview:(uitableview *)tableview   

//指定每個分割槽中有多少行,預設為1

- (nsinteger)tableview:(uitableview *)tableviewnumberofrowsinsection:(nsinteger)section  

//設定每行呼叫的cell

-(uitableviewcell *)tableview:(uitableview *)tableviewcellforrowatindexpath:(nsindexpath *)indexpath   

cell.imageview.image=image;//未選cell時的

cell.imageview.highlightedimage=highlightimage;//選中cell後的

cell.text=@」andy-清風」;  

return

cell;  

}  //設定讓uitableview行縮排

-(nsinteger)tableview:(uitableview *)tableviewindentationlevelforrowatindexpath:(nsindexpath *)indexpath  

//設定cell每行間隔的高度

- (cgfloat)tableview:(uitableview *)tableviewheightforrowatindexpath:(nsindexpath *)indexpath  

//返回當前所選cell

nsindexpath *ip = [nsindexpath indexpathforrow:row insection:section];  

[topicstable selectrowatindexpath:ip animated:yesscrollposition:uitableviewscrollpositionnone];  

//設定uitableview的style

[tableview setseparatorstyle:uitableviewcellselectionstylenone];  

//設定選中cell的響應事件

- (void

)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath*)indexpath  

//設定選中的行所執行的動作

-(nsindexpath *)tableview:(uitableview *)tableviewwillselectrowatindexpath:(nsindexpath *)indexpath  

//設定划動cell是否出現del按鈕,可供刪除資料裡進行處理

- (bool)tableview:(uitableview *)tableview caneditrowatindexpath:(nsindexpath*)indexpath   

//設定刪除時編輯狀態

- (void

)tableview:(uitableview *)tableview commiteditingstyle:(uitableviewcelleditingstyle)editingstyle  

forrowatindexpath:(nsindexpath *)indexpath    

(2)  其他

[csharp]view plain

copy

//選中cell時的顏色,在官方文件有如下可以選擇

typedef enum

uitableviewcellselectionstyle  

//cell右邊按鈕格式

typedef enum

uitableviewcellaccessorytype  

//是否加換行線

typedef enum

uitableviewcellseparatorstyle  

//改變換行線顏色

tableview.separatorcolor= [uicolor bluecolor];  

4.    uitableviewcell

uitableviewcell為每個cell提供了三個可以選擇的屬性,如下:

UITableView 詳細講解

建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...

UITableView 詳細講解

建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...

UITableView 詳細講解

ios開發qq群 204161656 建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource ...