創(chuàng)建表格的代理協(xié)議與數(shù)據(jù)源協(xié)議:
? ? ? ? class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {}
代碼創(chuàng)建表格對象:
? ? ? ? let tableView = UITableView(frame: CGRect)
? ? ? ? tableView.delegate = self
? ? ? ? tableView.dataSource = self
? ? ? ? self.view.addSubview(tableView)
? ? ? ? ? ? //viewDidLoad方法中
獲得主屏的尺寸代碼:
? ? ? ? let screenRect = UIScreen.main.bounds
表格對象行數(shù)的方法:
? ? ? ? func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
? ? ? ? ? ? return Int
? ? ? ? }
表格初始化與Cell復(fù)用的方法:
? ? ? ? func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
? ? ? ? ? ? let identifier = ""
? ? ? ? ? ? var cell = tableView.dequeueReusableCell(withIdentifier: identifier)
? ? ? ? ? ? if(cell == nil){
? ? ? ? ? ? ? ? cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: identifier)
? ? ? ? ? ? }
? ? ? ? ? ? return cell!
? ? ? ? }
UITableViewDatasource的主要代理方法_初始化與復(fù)用方法tableView(_:cellForRowAt:) //(必須)
UITableViewDatasource的主要代理方法_設(shè)置Cell行數(shù)的方法: tableView(_:numberOfRowsInSection:) (必須)
UITableViewDatasource的主要代理方法_設(shè)置Section的數(shù)量: numberOfSections(in:)?
UITableViewDatasource的主要代理方法_設(shè)置Section標(biāo)題文字的方法: tableView(_:titleForHeaderInSecton:)?
UITableViewDatasource的主要代理方法_表格編輯模式方法: tableView(_:canEditRowAt:)?
UITableViewDatasource的主要代理方法_完成插入或刪除事件后調(diào)用的方法: tableView(_:commit:forRowAt:)?
UITableViewDatasource的主要代理方法_設(shè)置Cell可移動的方法: tableView(_:canMoveRowAt:)?
UITableViewDatasource的主要代理方法_Cell移動調(diào)用的方法: tableView(_:moveRowAt:to:)?
Cell的預(yù)制Style_image-label:UITableViewCellStyle.default?
Cell的預(yù)制Style_image-label-label:UITableViewCellStyle.value1
Cell的預(yù)制Style_label-label:UITableViewCellStyle.value2
Cell的預(yù)制Style_image-label/small_label:UITableViewCellStyle.subtitle?
自定義Cell第一步: 新建一個swift文件(例如tableViewCellDiy.swift)
UITableviewCell.swift所屬的類: class CustomizeUITableViewCell: UITableViewCell {}
自定義Cell初始化方法:
? ? ? ? override init(style: UITableViewCellStyle, reuseIdentifier: String?) {}
? ? ? ? ?required init?(coder aDecoder: NSCoder) {}
創(chuàng)建Cell的image:
? ? ? ? var thumbnail: UIImageView!
? ? ? ? override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
? ? ? ? ? ? super.init(style: style, reuseIdentifier: reuseIdentifier)
? ? ? ? }
創(chuàng)建Cell的label:
? ? ? ? var title: UILabel!
? ? ? ? override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
? ? ? ? ? ? super.init(style: style, reuseIdentifier: reuseIdentifier)
? ? ? ? ? ? self.title = UILabel(frame: CGRect(x: Int, y: Int, width: Int, height: Int))
? ? ? ? ? ? self.title.text = ""
? ? ? ? ? ? self.addSubview(self.title)
? ? ? ? ?}
創(chuàng)建Cell的button:
? ? ? ? var detail: UIButton!
? ? ? ? override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
? ? ? ? ? ? super.init(style: style, reuseIdentifier: reuseIdentifier)
? ? ? ? ? ? self.detail = UIButton(frame: CGRect(x: Int, y: Int, width: Int, height: Int))
? ? ? ? ? ? self.detail.setTitle("", for: UIControlState())
? ? ? ? ? ? self.addSubview(self.detail)
? ? ? ? }
自定義Cell文件(tableViewCellDiy.swift)與表格文件相關(guān)聯(lián):
? ? ? ? //在表格視圖swift文件中宝当,添加cellForRowAt方法
? ? ? ? func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
? ? ? ? ? ? let identifier = "reusedCell"
? ? ? ? ? ? var cell: tableViewCellDiy? = tableView.dequeueReusableCell(withIdentifier: identifier)as? tableViewCellDiy
? ? ? ? ? ? if cell == nil{
? ? ? ? ? ? ? ? cell = tableViewCellDiy(style: UITableViewCellStyle.default, reuseIdentifier: identifier)
? ? ? ? ? ? }
? ? ? ? ? ? return cell!
? ? ? ? }
表格Cell高度的方法(高度為80):
? ? ? ? func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
? ? ? ? ? ? return 80
? ? ? ? }
UITableViewDelegate主要的代理方法 _設(shè)置Cell高度:tableView(_:heightForRowAt:)?
UITableViewDelegate主要的代理方法 _Cell將被顯示調(diào)用的方法:tableView(_:willDisplay:forRowAt:)?
UITableViewDelegate主要的代理方法 _Cell被點(diǎn)擊調(diào)用的方法:tableView(_:didSelectRowAt:)?
UITableViewDelegate主要的代理方法 _已被選中的Cell被點(diǎn)擊調(diào)用的方法:tableView(_:didDeselectRowAt:)?
UITableViewDelegate主要的代理方法 _設(shè)置section的頭部:tableView(_:viewForHeaderInSection:)?
UITableViewDelegate主要的代理方法 _設(shè)置section的尾部:tableView(_:viewForFooterInSection:)?
表格的section和索引:書第198頁
響應(yīng)Cell點(diǎn)擊事件的方法: func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {}
被點(diǎn)擊Cell附件的勾選圖標(biāo)代碼:
? ? ? ? let cell = tableView.cellForRow(at: indexPath)
? ? ? ? if cell?.accessoryType == UITableViewCellAccessoryType.none {
? ? ? ? ? ? cell?.accessoryType = UITableViewCellAccessoryType.checkmark
? ? ? ? }else{
? ? ? ? ? ? cell?.accessoryType = UITableViewCellAccessoryType.none
? ? ? ? }
? ? ? ? //tableView(didSelectRowAt)方法中
Cell附件(UITableViewCellAccessoryType)類型_無: UITableViewCellAccessoryType.none?
Cell附件(UITableViewCellAccessoryType)類型_?:UITableViewCellAccessoryType.detailButton?
Cell附件(UITableViewCellAccessoryType)類型_?>:UITableViewCellAccessoryType.detailDisclosureButton?
Cell附件(UITableViewCellAccessoryType)類型_>:UITableViewCellAccessoryType.disclosureIndicator?
Cell附件(UITableViewCellAccessoryType)類型_??:UITableViewCellAccessoryType.checkmark?
表格的編輯模式:
? ? ? ? tableView.setEditing(editing: Bool, animated: Bool)
? ? ? ? //editing編輯模式(默認(rèn)false)黎比,animated動畫
? ? ? ? //viewDidLoad方法中
Cell編輯屬性的方法(屬性設(shè)置為刪除):
? ? ? ? func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
? ? ? ? return UITableViewCellEditingStyle.delete
? ? ? ? }
3.響應(yīng)Cell刪除事件的方法與代碼:
? ? ? ? func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
? ? ? ? ? ? if editingStyle == UITableViewCellEditingStyle.delete {
? ? ? ? ? ? items.remove(at: indexPath.row)
? ? ? ? ? ? let indePaths = [indexPath]
? ? ? ? ? ? ?tableView.deleteRows(at: indePaths, with: UITableViewRowAnimation.automatic)
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //items是數(shù)據(jù)源變量
數(shù)組的長度: Array.count
UITableViewCell編輯類型_默認(rèn)模式:UITableViewCellEditingStyle.none?
UITableViewCell編輯類型_刪除模式:UITableViewCellEditingStyle.delete?
UITableViewCell編輯類型_插入模式:UITableViewCellEditingStyle.insert?
表格插入Cell代碼:
? ? ? ? func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
? ? ? ? ? ? return UITableViewCellEditingStyle.insert
? ? ? ? }
? ? ? ? func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
? ? ? ? ? ? if editingStyle == UITableViewCellEditingStyle.insert {
? ? ? ? ? ? items.insert("", at: indexPath.row)
? ? ? ? ? ? let indePaths = [indexPath]
? ? ? ? ? ? tableView.insertRows(at: indePaths, with: UITableViewRowAnimation.right)
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //items是數(shù)據(jù)源變量
表格移動Cell代碼:
? ? ? ? ?func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
? ? ? ? ? ? return true
? ? ? ? }
? ? ? ? func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
? ? ? ? ? ? let fromRow = sourceIndexPath.row
? ? ? ? ? ? let toRow = destinationIndexPath.row
? ? ? ? ? ? let obj = items[fromRow]
? ? ? ? ? ? items.remove(at: fromRow)
? ? ? ? ? ? items.insert(obj, at: toRow)
? ? ? ? }
? ? ? ? //items是數(shù)據(jù)源變量
表格之間的嵌套:書第213頁
213
表格Cell圖標(biāo)和高亮圖標(biāo)代碼:
? ? ? ? cell?.imageView?.image = UIImage(named: “”)
? ? ? ? cell?.imageView?.highlightedImage = UIImage(named: “”)
? ? ? ? //tableView(cellForRowAt)方法中
Cell標(biāo)題文字:cell?.textLabel?.text = "" ?//tableView(cellForRowAt)方法中
Cell細(xì)節(jié)標(biāo)題文字: cell?.detailTextLabel?.text = "" ?//tableView(cellForRowAt)方法中
Cell背景顏色為藍(lán)色: cell?.backgroundColor = UIColor.blue ?//tableView(cellForRowAt)方法中
滑動到指定Cell:
? ? ? ? let indexPath = IndexPath(row: Int, section: Int)
? ? ? ? tableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition.top, animated: true)
? ? ? ? //viewDidLoad方法中
獲取當(dāng)前Cell在section的行數(shù):let rowNum = indexPath.row ?//tableView(cellForRowAt)方法中
Cell的accessory按鈕點(diǎn)擊事件調(diào)用的方法: func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {}
UICollectionView實(shí)例:書第221-225