iOS tableView全面詳解

2022-07-18 05:03:13 字數 2634 閱讀 8714

1.tableview有兩種展現形式,uitableviewstyleplain和uitableviewstylegrouped

建立tableview

self.tableview = [[uitableview alloc] initwithframe:cgrectmake(0, 0, screen_width,screen_height-44) style:uitableviewstyleplain];

2.設定tableview的**,必須實現的兩個方法設定cell的內容和cell的高度,否則會出現崩潰的現象。

self.table.datasource = self;

self.table.delegate = self;

3.如果有尾部檢視或者頭部檢視,還要設定self.tableview.tableheaderview和self.tableview.tablefooterview

//顯示有多少組

- (nsinteger)numberofsectionsintableview:(uitableview *)tableview 

//顯示每組的頭部

-(uiview*)tableview:(uitableview *)tableview viewforheaderinsection:(nsinteger)section

//顯示每組的尾部

-(uiview*)tableview:(uitableview *)tableview viewforfooterinsection:(nsinteger)section

//顯示每組的尾部標題有多高

-(cgfloat)tableview:(uitableview *)tableview heightforfooterinsection:(nsinteger)sectionelse{

[self.table setediting:yes animated:yes];

//對應的行是否可以被編輯

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

//設定編輯風格

-(uitableviewcelleditingstyle)tableview:(uitableview *)tableview editingstyleforrowatindexpath:(nsindexpath *)indexpath{

uitableviewcelleditingstylenone,

uitableviewcelleditingstyledelete,刪除

uitableviewcelleditingstyleinsert新增

//提交編輯(左滑刪除和新增)

- (void)tableview:(uitableview *)tableview commiteditingstyle:(uitableviewcelleditingstyle)editingstyle forrowatindexpath:(nsindexpath *)indexpath {

if (editingstyle == uitableviewcelleditingstyledelete) {//刪除

[self.servicearry removeobjectatindex:indexpath.row];

[self.tableview deleterowsatindexpaths:@[indexpath] withrowanimation:uitableviewrowanimationbottom];//刪除重新整理

else if (editingstyle == uitableviewcelleditingstyleinsert) {//新增

[datas insertobject:@"ab" atindex:indexpath.row];

[self.table insertrowsatindexpaths:@[indexpath] withrowanimation:uitableviewrowanimationbottom];//新增重新整理

//設定是否可以移動

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

//提交移動結果

-(void)tableview:(uitableview *)tableview moverowatindexpath:(nsindexpath *)sourceindexpath toindexpath:(nsindexpath *)destinationindexpath{

//先把要移動的資料儲存

id moveobj = [datas objectatindex:sourceindexpath.row];

//從陣列中刪除要移動的資料

[datas removeobjectatindex:sourceindexpath.row];

//把要移動的資料插入到目標位置

[datas insertobject:moveobj atindex:destinationindexpath.row];

//每行的點選事件

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

iOS tableView分割槽 索引

1.建立乙個viewcontroller,new file cocoa touch objective c class class viewcontroller,subclass of uiviewcontroller 2.開啟xib,在view中新增tableview,並將tableview的兩個...

iOS tableView效能優化

什麼時候呼叫 每當有乙個cell進入視野範圍內就會呼叫 uitableviewcell tableview uitableview tableview cellforrowatindexpath nsindexpath indexpath 3.覆蓋資料 cell.textlabel.text nss...

iOS tableView 上下偏移

說一下問題吧,xcode10 向下相容到ios8,ios10以下版本會出現tableview向上或者向下偏移很是煩人。於是山寨了乙個解決方案 該方法適用於向上偏移 void tableview uitableview tableview willdisplaycell uitableviewcell...