Register
tableView.registerCell(MyClass.self)
Use
let cell: MyClass = tableView.dequeueCell(indexPath)
extension UITableView { | |
func registerCell<T : UITableViewCell>(_: T.Type, identifier: String = T.identifier) { | |
if let nib = T.nib { | |
registerNib(nib, forCellReuseIdentifier: identifier) | |
} else { | |
registerClass(T.self, forCellReuseIdentifier: identifier) | |
} | |
} | |
func registerHeader<T: UITableViewHeaderFooterView>(_: T.Type, identifier: String = T.identifier) { | |
if let nib = T.nib { | |
registerNib(nib, forHeaderFooterViewReuseIdentifier: identifier) | |
} else { | |
registerClass(T.self, forHeaderFooterViewReuseIdentifier: identifier) | |
} | |
} | |
func dequeueCell<T: UITableViewCell>(indexPath: NSIndexPath, identifier: String = T.identifier) -> T { | |
let cell = dequeueReusableCellWithIdentifier(T.identifier, forIndexPath: indexPath) as! T | |
return cell | |
} | |
func dequeueHeader<T: UITableViewHeaderFooterView>(section: Int, identifier: String = T.identifier) -> T { | |
let header = dequeueReusableHeaderFooterViewWithIdentifier(T.identifier) as! T | |
return header | |
} | |
} | |
extension UITableViewHeaderFooterView { | |
class var nibName: String { | |
let name = "\(self)".componentsSeparatedByString(".").first ?? "" | |
return name | |
} | |
class var nib: UINib? { | |
if let _ = MainBundle.pathForResource(nibName, ofType: "nib") { | |
return UINib(nibName: nibName, bundle: nil) | |
} else { | |
return nil | |
} | |
} | |
class var identifier: String { | |
return "identifier:\(self)" | |
} | |
} | |
extension UITableViewCell { | |
class var nibName: String { | |
let name = "\(self)".componentsSeparatedByString(".").first ?? "" | |
return name | |
} | |
class var nib: UINib? { | |
if let _ = MainBundle.pathForResource(nibName, ofType: "nib") { | |
return UINib(nibName: nibName, bundle: nil) | |
} else { | |
return nil | |
} | |
} | |
class var identifier: String { | |
return "identifier:\(self)" | |
} | |
} |
Register
tableView.registerCell(MyClass.self)
Use
let cell: MyClass = tableView.dequeueCell(indexPath)