Skip to content

Instantly share code, notes, and snippets.

@jimmythai
Last active June 19, 2018 05:53
Show Gist options
  • Select an option

  • Save jimmythai/0041e45a02b51d6219c0073ed02aa140 to your computer and use it in GitHub Desktop.

Select an option

Save jimmythai/0041e45a02b51d6219c0073ed02aa140 to your computer and use it in GitHub Desktop.
extension UITableView {
// For `register` methods
func register<T: Reusable>(_ reusableClass: T.Type) where T: UITableViewCell {
register(reusableClass, forCellReuseIdentifier: reusableClass.reusableIdentifier)
}
func register<T: NibReusable>(_ nibReusableClass: T.Type) where T: UITableViewCell {
register(nibReusableClass.nib, forCellReuseIdentifier: nibReusableClass.reusableIdentifier)
}
// For `dequeueReusableCell` methods
func dequeueReusableCell<T: Reusable>(_ reusableClass: T.Type) -> T where T: UITableViewCell {
guard let cell = dequeueReusableCell(withIdentifier: reusableClass.reusableIdentifier) as? T else {
fatalError("Unknown class type for cell, \(reusableClass)")
}
return cell
}
func dequeueReusableCell<T: Reusable>(_ reusableClass: T.Type, for indexPath: IndexPath) -> T where T: UITableViewCell {
guard let cell = dequeueReusableCell(withIdentifier: reusableClass.reusableIdentifier, for: indexPath) as? T else {
fatalError("Unknown class type for cell, \(reusableClass)")
}
return cell
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment