首先我们在mvc的view文件夹里面定义一个MyCell,
继承UITableViewCell,
选择的语言是Swift
然后就可以在控制器里面是使用了,
以下是代码这里我们的控制器:
class MineViewController: UITableViewController{
.....
override func viewDidLoad() {
super.viewDidLoad()
//这里就是我们要注册的自定义Cell
tableView.register(UINib(nibName: String(describing:MyCell.self), bundle: nil), forCellReuseIdentifier: String(describing:MyCell.self))
}
.....
}
注册完之后我们就可以替换系统的方法了,代码如下
class MineViewController: UITableViewController{
.....
//返回cell的主要方法。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//这里是我们主要的方法dequeueReusableCell,用来使用cell
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing:MyCell.self)) as! MyCell
//这里可以不要看,这里是数据的获取
let section = sections[indexPath.section]
let myCellModel = section[indexPath.row]
//这里的leftLabel是我们在xib里面的label,也是我们自定义的
cell.leftLabel.text = myCellModel.text
//这里的rightLabel是我们在xib里面的label,也是我们自定义的
cell.rightLabel.text = myCellModel.grey_text
//返回一个自定义cell
return cell
}
.....
}
接下来介绍的是简化cell调用,操作步骤如下
1,在我们的主要文件夹里面新建一个UIView+Extension.swift
import UIKit
protocol RegisterCellOrNib {}
extension RegisterCellOrNib{
static var identifier:String{
return "\(self)"
}
static var nib:UINib?{
return UINib(nibName: "\(self)", bundle: nil)
}
}
2,在同级目录下新建一个UITableView+Extension.swift ,这里拓展的是UITableView
import UIKit
extension UITableView{
//这里是注册
func fp_registerCell(cell:T.Type) where T:RegisterCellOrNib {
if let nib = T.nib {
register(nib, forCellReuseIdentifier: T.identifier)
}else{
register(cell, forCellReuseIdentifier: T.identifier)
}
}
//这里是调用得到cell
func fp_dequeueReusableCell(indexPath:IndexPath) -> T where T:RegisterCellOrNib {
return dequeueReusableCell(withIdentifier: T.identifier,for: indexPath)as! T
}
}
就两步,不复杂。
接下来是替换。
class MineViewController: UITableViewController{
.....
override func viewDidLoad() {
super.viewDidLoad()
//这里就是我们要注册的自定义Cell
tableView.register(UINib(nibName: String(describing:MyCell.self), bundle: nil), forCellReuseIdentifier: String(describing:MyCell.self))
//以上的代码替换成下面的
tableView.fp_registerCell(cell: MyCell.self)
}
}
使用的时候也替换一下
class MineViewController: UITableViewController{
.....
//返回cell的主要方法。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//这里是我们主要的方法dequeueReusableCell,用来使用cell
//let cell = tableView.dequeueReusableCell(withIdentifier: String(describing:MyCell.self)) as! MyCell
//以上的代码替换成下面的
let cell = tableView.fp_dequeueReusableCell(indexPath: indexPath) as MyCell
......
return cell
}
.....
}
这篇就结束了,总结一点,就是自定义cell的使用实战。