Skip to content

Instantly share code, notes, and snippets.

@lordzsolt
Last active November 12, 2021 16:40
Show Gist options
  • Save lordzsolt/da29cb97bf0faaa85d68fe154f51fdbb to your computer and use it in GitHub Desktop.
Save lordzsolt/da29cb97bf0faaa85d68fe154f51fdbb to your computer and use it in GitHub Desktop.
ReusableView.swift
extension ReusableView where Self: UIView {
static var reuseIdentifier: String {
return String(describing: self)
}
}
extension UITableViewCell: ReusableView {}
extension UITableViewHeaderFooterView: ReusableView {}
extension UICollectionView: ReusableView {}
extension UICollectionReusableView: ReusableView {}
extension UITableView {
func register<T: UITableViewCell>(_: T.Type) {
register(T.self, forCellReuseIdentifier: T.reuseIdentifier)
}
func register<T: UITableViewHeaderFooterView>(_: T.Type) {
register(T.self, forHeaderFooterViewReuseIdentifier: T.reuseIdentifier)
}
func dequeueReusableCell<T: UITableViewCell>(forIndexPath indexPath: IndexPath) -> T {
let cell = dequeueReusableCell(withIdentifier: T.reuseIdentifier, for: indexPath)
return cell as! T
}
func dequeueHeaderFooterView<T: UITableViewHeaderFooterView>() -> T {
let headerFooterView = dequeueReusableHeaderFooterView(withIdentifier: T.reuseIdentifier) as! T
return headerFooterView
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment