用于 Cocoa 的通用可重用组件。目前支持 UITableView
和 UICollectionView
。
collectionView.register(UserCell.self, forCellWithReuseIdentifier: "userCell")
collectionView.dequeueReusableCell(withReuseIdentifier: "userCell", for: indexPath) as! UserCell
let reusableUserCell = ReusableCell<UserCell>()
collectionView.register(reusableUserCell)
collectionView.dequeue(reusableUserCell) // UserCell
建议将可重用类型定义为 enum
或 struct
中的静态常量。
// 1. define
enum Reusable {
static let headerView = ReusableCell<SectionHeaderView>()
static let userCell = ReusableCell<UserCell>()
}
// 2. register
tableView.register(Reusable.headerView)
tableView.register(Reusable.userCell)
// 3. dequeue
tableView.dequeue(Reusable.headerView, for: indexPath)
tableView.dequeue(Reusable.userCell, for: indexPath)
// 1. define
enum Reusable {
static let headerView = ReusableCell<SectionHeaderView>()
static let photoCell = ReusableCell<PhotoCell>()
}
// 2. register
collection.register(Reusable.headerView, kind: .header)
collection.register(Reusable.photoCell)
// 3. dequeue
collection.dequeue(Reusable.headerView, kind: .header, for: indexPath)
collection.dequeue(Reusable.photoCell, for: indexPath)
ReusableKit 支持 RxSwift 扩展。
users // Observable<[String]>
.bind(to: collectionView.rx.items(Reusable.userCell)) { i, user, cell in
cell.user = user
}
欢迎提交 Pull Requests 💖
为了创建 Xcode 项目,请运行
$ swift package generate-xcodeproj
适用于 iOS 9+ 项目,使用 CocoaPods
pod 'ReusableKit'
pod 'ReusableKit/RxSwift' # with RxSwift extension
ReusableKit 基于 MIT 许可。 更多信息请参考 LICENSE 文件。