DTCollectionViewManager
特性
- 强大的数据模型与单元格、头部和尾部之间的映射系统
- 自动数据源和界面同步。
- 灵活的 Memory/CoreData/Realm/diffable 数据源存储选项
- 强大的编译时安全事件系统,涵盖所有 UICollectionView 代理方法
- 从代码、XIB 或故事板创建的视图,自动注册和回收
- 可与 UICollectionViewController 或拥有 UICollectionView 的 UIViewController 一起使用
- 内置对 iOS 14 UICollectionView.CellRegistration 和内容配置的支持
- 与 DTTableViewManager 兼容的统一语法
- 完整的文档
- API 参考
需求
- Xcode 12+
- iOS 11.0+ / tvOS 11.0+ / macCatalyst 13.0+
- Swift 5.3+
如果需要 Xcode 11 支持、或 Swift 4...Swift 5.2、或 iOS 8...iOS 10 支持,您可以使用 7.x 版本。
安装
Swift 包管理器
添加包到 Xcode 项目设置 -> Swift 包
CocoaPods
pod 'DTCollectionViewManager', '~> 11.0.0-beta.1'
快速开始
假设您有一个包含 Posts 实体的数组,想在 UICollectionView 中显示它们。使用 DTCollectionViewManager 快速显示,需要这样做
- 创建 UICollectionViewCell 子类,比如 PostCell,并采用
ModelTransfer
协议
class PostCell : UICollectionViewCell, ModelTransfer {
func update(with model: Post) {
// Fill your cell with actual data
}
}
- 在您的视图控制器中
class PostsViewController: UICollectionViewController, DTCollectionViewManageable {
override func viewDidLoad() {
super.viewDidLoad()
// Register PostCell to be used with this controller's collection view
manager.register(PostCell.self)
// Populate datasource
manager.memoryStorage.setItems(posts)
}
}
确保您的 UICollectionView 媒介 outlet 与您的类连接(或使用 UICollectionViewController 子类)。如果有一个 PostCell.xib 文件,它将自动用于 PostCell 的 dequeuing。
- 就是这样!就这么简单!
当然,酷炫的功能并不止于此。这个框架支持所有数据源和委托方法作为闭包,条件映射以及更多!在下一节README中,选择您感兴趣的内容。
常见问题解答
启动包
- 为什么需要这个库?
- 数据模型如何映射到单元格?
- 我可以使用未配色类委员会副主任会或UICollectionReusableView(例如UICollectionViewListCell)吗?
- 如何通过代码/xib/storyboard注册视图以从 deque 中提取?
- 如何在不同地方以不同的方式使用相同的单元格?
- 我有哪些数据源选项?(例如,内存/.CoreData/Realm/diffable 数据源)
- 如何从
UICollectionView
实现 datasource/delegate 方法?
高级
示例代码和文档
感谢
- Alexey Belkevich 提供了 CellFactory 的初始实现。
- Michael Fey 提供了有关正确完成 NSFetchedResultsController 更新的见解。
- Nickolay Sheika 提供了宝贵的反馈,这有助于塑造 3.0 版本的发布以及库的未来方向。
- Artem Antihevich 就 Swift 泛型和类型捕捉进行了有益的讨论。