diff --git a/DataSourceKit/CellBinder.swift b/DataSourceKit/CellBinder.swift index 2c8f1b8..ac4a2e7 100644 --- a/DataSourceKit/CellBinder.swift +++ b/DataSourceKit/CellBinder.swift @@ -26,7 +26,7 @@ public struct CellBinder { self.reuseIdentifier = reuseIdentifier self.configureCell = { cell in guard let cell = cell as? Cell else { - fatalError("Could not cast UICollectionView cell to \(Cell.self)") + fatalError("Could not cast cell to \(Cell.self)") } configureCell(cell) diff --git a/DataSourceKit/CollectionViewDataSource.swift b/DataSourceKit/CollectionViewDataSource.swift index 3f20fe4..8d341e3 100644 --- a/DataSourceKit/CollectionViewDataSource.swift +++ b/DataSourceKit/CollectionViewDataSource.swift @@ -9,15 +9,25 @@ import UIKit public class CollectionViewDataSource: NSObject, UICollectionViewDataSource { + + // MARK: Public Properties + + public typealias Configurator = (CellDeclaration) -> CellBinder public var cellDeclarations = [] as [CellDeclaration] - + + // MARK: Private Properties + private var registeredReuseIdentifiers = [] as [String] - private let binderFromDeclaration: (CellDeclaration) -> CellBinder - - public init(binderFromDeclaration: @escaping (CellDeclaration) -> CellBinder) { + private let binderFromDeclaration: Configurator + + // MARK: Init + + public init(binderFromDeclaration: @escaping Configurator) { self.binderFromDeclaration = binderFromDeclaration super.init() } + + // MARK: UICollectionViewDataSource public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return cellDeclarations.count diff --git a/DataSourceKit/TableViewDataSource.swift b/DataSourceKit/TableViewDataSource.swift index 0d203d2..72e3a5c 100644 --- a/DataSourceKit/TableViewDataSource.swift +++ b/DataSourceKit/TableViewDataSource.swift @@ -9,15 +9,25 @@ import UIKit public class TableViewDataSource: NSObject, UITableViewDataSource { + + // MARK: Public Properties + + public typealias Configurator = (CellDeclaration) -> CellBinder public var cellDeclarations = [] as [CellDeclaration] - + + // MARK: Private Properties + private var registeredReuseIdentifiers = [] as [String] - private let binderFromDeclaration: (CellDeclaration) -> CellBinder - - public init(binderFromDeclaration: @escaping (CellDeclaration) -> CellBinder) { + private let binderFromDeclaration: Configurator + + // MARK: Init + + public init(binderFromDeclaration: @escaping Configurator) { self.binderFromDeclaration = binderFromDeclaration super.init() } + + // MARK: UITableViewDataSource public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return cellDeclarations.count @@ -36,8 +46,10 @@ public class TableViewDataSource: NSObject, UITableViewDataSour } registeredReuseIdentifiers.append(cellBinder.reuseIdentifier) } + let cell = tableView.dequeueReusableCell(withIdentifier: cellBinder.reuseIdentifier, for: indexPath) cellBinder.configureCell(cell) + return cell } } diff --git a/DataSourceKitTests/Example/CTableViewCell.swift b/DataSourceKitTests/Example/CTableViewCell.swift index 7b39fd9..b826d91 100644 --- a/DataSourceKitTests/Example/CTableViewCell.swift +++ b/DataSourceKitTests/Example/CTableViewCell.swift @@ -12,7 +12,7 @@ import DataSourceKit class CTableViewCell: UITableViewCell { var idLabel = UILabel(frame: .zero) - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) contentView.addSubview(idLabel) idLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor)