Skip to content

Instantly share code, notes, and snippets.

@loganwright
Last active November 7, 2015 15:26
Show Gist options
  • Save loganwright/88fe89fe09d7b28b274a to your computer and use it in GitHub Desktop.
Save loganwright/88fe89fe09d7b28b274a to your computer and use it in GitHub Desktop.
Cell Configuring
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment