Swift 3 tableView之不一样的注册cell

之前在OC中就封装了一个注册cell的UITableView的分类,项目中用的很顺手,今天花了点时间迁移到Swift上来。废话不多说直接上代码,由于是初学,什么AnyClass, 什么感叹号都是一顿瞎用,不对的地方请指正。

代码的作用
  • 以前注册cell的时候是这样的(也许我的做法还并不标准)
private static let defaultCellidentifier = String(describing: UITableViewCell.self)
private static let testCellidentifier = String(describing: TestTableViewCell.self)
tableView.register(UITableViewCell.self, forCellReuseIdentifier:HomeViewController.defaultCellidentifier);
tableView.register(UINib.init(nibName: "TestTableViewCell", bundle: nil), forCellReuseIdentifier: HomeViewController.testCellidentifier);
  • 现在注册cell是这样的
tableView.registerCell(cellTypes: [UITableViewCell.self,TestTableViewCell.self])
  • 在tableView代理方法中重用cell
let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TestTableViewCell.self), for: indexPath)
以下是分类的实现代码
import Foundation
import UIKit

extension UITableView{
    func registerCell(cellTypes:[AnyClass]){
        for cellType in cellTypes {
            let typeString = String(describing: cellType)
            let xibPath = Bundle.init(for: cellType).path(forResource: typeString, ofType: "nib")
            if xibPath==nil {
                self.register(cellType, forCellReuseIdentifier: typeString);
            }
            else{
                self.register(UINib.init(nibName: typeString, bundle: nil), forCellReuseIdentifier: typeString)
            }
        }
    }
}

你可能感兴趣的:(Swift 3 tableView之不一样的注册cell)