Swift4 tableView如何优雅的注册cell,获取循环
2018-04-21 本文已影响28人
船长_
注册cell示例
tableView.ts_registerCellNib(HomeCell.self)
获取循环利用的cell示例
let cell = tableView.ts_dequeueReusableCell(HomeCell.self)
public extension UITableView {
// MARK: - Cell register and reuse
/**
Register cell nib
- parameter aClass: class
*/
func ts_registerCellNib<T: UITableViewCell>(_ aClass: T.Type) {
let name = String(describing: aClass)
let nib = UINib(nibName: name, bundle: nil)
self.register(nib, forCellReuseIdentifier: name)
}
/**
Register cell class
- parameter aClass: class
*/
func ts_registerCellClass<T: UITableViewCell>(_ aClass: T.Type) {
let name = String(describing: aClass)
self.register(aClass, forCellReuseIdentifier: name)
}
/**
Reusable Cell
- parameter aClass: class
- returns: cell
*/
func ts_dequeueReusableCell<T: UITableViewCell>(_ aClass: T.Type) -> T! {
let name = String(describing: aClass)
guard let cell = dequeueReusableCell(withIdentifier: name) as? T else {
fatalError("\(name) is not registed")
}
return cell
}
// MARK: - HeaderFooter register and reuse
/**
Register cell nib
- parameter aClass: class
*/
func ts_registerHeaderFooterNib<T: UIView>(_ aClass: T.Type) {
let name = String(describing: aClass)
let nib = UINib(nibName: name, bundle: nil)
self.register(nib, forHeaderFooterViewReuseIdentifier: name)
}
/**
Register cell class
- parameter aClass: class
*/
func ts_registerHeaderFooterClass<T: UIView>(_ aClass: T.Type) {
let name = String(describing: aClass)
self.register(aClass, forHeaderFooterViewReuseIdentifier: name)
}
/**
Reusable Cell
- parameter aClass: class
- returns: cell
*/
func ts_dequeueReusableHeaderFooter<T: UIView>(_ aClass: T.Type) -> T! {
let name = String(describing: aClass)
guard let cell = dequeueReusableHeaderFooterView(withIdentifier: name) as? T else {
fatalError("\(name) is not registed")
}
return cell
}
}