Swift4.x普通笔记03自定义Cell,拓展TableViewCell来简化Cell调用的方式

首先我们在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<T:UITableViewCell>(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<T:UITableViewCell>(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的使用实战。

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值