| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- //
- // UITableView+Identifiable.swift
- // Bio
- //
- // Created by Joan Disho on 22.07.18.
- // Copyright © 2018 Joan Disho. All rights reserved.
- //
- import UIKit
- extension UITableView {
- func register<T: UITableViewCell>(cellType: T.Type) where T: ClassIdentifiable {
- register(cellType.self, forCellReuseIdentifier: cellType.reuseId)
- }
- func register<T: UITableViewCell>(cellType: T.Type) where T: NibIdentifiable & ClassIdentifiable {
- register(cellType.nib, forCellReuseIdentifier: cellType.reuseId)
- }
- func registerHeaderFooter<T: UITableViewHeaderFooterView>(viewType: T.Type) where T: ClassIdentifiable {
- register(viewType.self, forHeaderFooterViewReuseIdentifier: viewType.reuseId)
- }
- func registerHeaderFooter<T: UITableViewHeaderFooterView>(viewType: T.Type) where T: NibIdentifiable & ClassIdentifiable {
- register(viewType.nib, forHeaderFooterViewReuseIdentifier: viewType.reuseId)
- }
- func dequeueReusableCell<T: UITableViewCell>(withCellType type: T.Type = T.self) -> T where T: ClassIdentifiable {
- guard let cell = dequeueReusableCell(withIdentifier: type.reuseId) as? T
- else { fatalError("Couldn't dequeue a UITableViewCell with identifier: \(type.reuseId)") }
- return cell
- }
- func dequeueResuableCell<T: UITableViewCell>(withCellType type: T.Type = T.self, forIndexPath indexPath: IndexPath) -> T where T: ClassIdentifiable {
- guard let cell = dequeueReusableCell(withIdentifier: type.reuseId, for: indexPath) as? T
- else { fatalError("Couldn't dequeue a UITableViewCell with identifier: \(type.reuseId)") }
- return cell
- }
- func dequeueResuableHeaderFooterView<T: UITableViewHeaderFooterView>(withViewType type: T.Type) -> T where T: ClassIdentifiable {
- guard let headerFooterView = self.dequeueReusableHeaderFooterView(withIdentifier: type.reuseId) as? T
- else { fatalError("Couldn't dequeue a UITableViewHeaderFooterView with identifier: \(type.reuseId)") }
- return headerFooterView
- }
- }
|