swift 4 2 TableView列表操作

2021-09-12 03:21:17 字數 2587 閱讀 9603

對於開發應用來說,列表是最常用到乙個控制項,而且對於列表的操作也最多,我們比較常用的有插入、刪除、多選、排序、索引等等。那麼今天我們就一一的實現我們這些功能。我們下面要用到version 10.1,swift 版本是4.2,在這個環境下實現。如果有不同的版本,有可能不相容,畢竟swift版本現在還沒有穩定。

以手機通訊錄為例,我們先來梳理一下思路:

說了這麼多沒有**感覺都像(廢)很(話)深(很)奧(多)一樣。那我們就擼擼**。

class viewcontroller: jhsbaseviewcontroller 

// 給資料按照字母分組,並排序

func resetpersonmodel() -> void

}sectionkeys.sort

}@objc override func buttonitemaction(_ item: uibarbuttonitem) else if item.tag == viewtagsense.selectedalltag.rawvalue

for key in sectionkeys.enumerated()

for item in list.enumerated()

}}else if item.tag == viewtagsense.addtag.rawvalue

present(ctrl, animated: true) ;}}

func deletemodelby(indexpath: indexpath) -> void

list.remove(at: indexpath.row);

if list.count == 0 else

}func addmodelto(model: personmodel) -> void else

}else

addmodelto(model: model);}}

//}// mark: - table view operation

extension viewcontroller

override func tableview(_ tableview: uitableview, numberofrowsinsection section: int) -> int

func tableview(_ tableview: uitableview, caneditrowat indexpath: indexpath) -> bool

func tableview(_ tableview: uitableview, titleforheaderinsection section: int) -> string?

func tableview(_ tableview: uitableview, editactionsforrowat indexpath: indexpath) -> [uitableviewrowaction]? ;

return [delaction];

}override func tableview(_ tableview: uitableview, cellforrowat indexpath: indexpath) -> uitableviewcell

func tableview(_ tableview: uitableview, diddeselectrowat indexpath: indexpath)

override func tableview(_ tableview: uitableview, didselectrowat indexpath: indexpath)

func tableview(_ tableview: uitableview, sectionforsectionindextitle title: string, at index: int) -> int

func sectionindextitles(for tableview: uitableview) -> [string]?

}

首先我們定義了乙個字典,這個字典的鍵就是我們每組人的首個字母,值就是當前組人的列表。第二個陣列是有多少組。

func resetpersonmodel()這個函式是給所有的人員按照字母分組,並排序。func deletemodelby(indexpath: indexpath)這個是刪除一條資料,我們需要判斷刪除完這條資料還沒有剩下的。有就刪row,沒有就刪secion。func addmodelto(model: personmodel)這個使我們新增資料的。這個也要判斷是否現在的列表已經有了改資料的secion,有就直接在改secion加row,沒有就要新增乙個secion。我們用了乙個遞迴函式。basetable.selectrow(at: indexpath.init(item: item.offset, section: key.offset), animated: true, scrollposition: .none) 這個就是選中乙個具體資料。

下面是personmodel資料模型:

class personmodel: basemodel 

return namepy;

}class func createpersons() -> [personmodel]

return list;

}}

Swift 建立乙個tableview

最近學習了一下swift,學完了基本語法嘗試寫了乙個tableview,確實遇到好多坑,下面上 和大家交流交流 怎麼建立乙個程式就不說了。import uikit tips swift裡面的協議繼承直接這樣寫就好了 class viewcontroller uiviewcontroller,uita...

Swift 關於tableView的多選和刪除

建立表 tableview在沒有實現datasource的三個方法是 tableview.datasource self 會報錯 關於tableview的多選操作 func tableview tableview uitableview,editingstyleforrowat indexpath ...

Swift 實現tableView單選系統樣式

實現tableview單選 import uikit class viewcontroller uiviewcontroller var tableview uitableview override func viewdidload super.viewdidload tableview uitab...