From 340c8ca413281fdd4cb9d6746077db496f4c11d6 Mon Sep 17 00:00:00 2001 From: Denys Telezhkin Date: Sun, 11 Oct 2015 20:33:42 +0300 Subject: [PATCH] add changelog, update readme --- CHANGELOG.md | 194 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 12 ++-- 2 files changed, 200 insertions(+), 6 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0431553 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,194 @@ +# Change Log +All notable changes to this project will be documented in this file. + +## [4.2.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/4.2.0) + +Dependency changelog -> [DTModelStorage 2.1 and higher](https://github.com/DenHeadless/DTModelStorage/releases) + +This release aims to improve storage updates and UI animation with UICollectionView. To make this happen, `DTModelStorage` classes were rewritten and rearchitectured, allowing finally to remove truly [historic workaround](https://github.com/DenHeadless/DTCollectionViewManager/commit/19ae8337b1f6442d1bd588b482d24395e99a2259#diff-7a0b0d0332a60e359c3b8e67a4034f09L674). This code was initially written to fix first item insertion and deletion of items in UICollectionView. Somewhere between iOS 6 and iOS 8 Apple has fixed bugs, that caused this behaviour to happen. This is not documented, and was not mentioned anywhere, and i was very lucky to find this out by accident. So finally, I was able to remove these workarounds(which by the way are almost [two years old](https://github.com/DenHeadless/DTCollectionViewManager/commit/0a4a33ba69a8a9752e84ffbf8f2d5c84ed8cd2aa)), and UICollectionView UI updates code is as clean as UITableView UI updates code. + +There are some backwards-incompatible changes in this release, however Xcode quick-fix tips should guide you through what needs to be changed. + + ## Added + + * `registerNiblessCellClass` and `registerNiblessSupplementaryClass` methods to support creating cells and supplementary views from code + + +## Bugfixes + +* Fixed `cellConfiguration` method, that was working incorrectly + +## [4.1.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/4.1.0) + +## Features + +New events registration system with method pointers, that automatically breaks retain cycles. + +For example, cell selection: + +```swift +manager.cellSelection(PostsViewController.selectedCell) + +func selectedCell(cell: PostCell, post: Post, indexPath: NSIndexPath) { + // Do something, push controller probably? +} +``` + +Alternatively, you can use dynamicType to register method pointer: + +```swift +manager.cellSelection(self.dynamicType.selectedCell) +``` + +Other available events: +* cellConfiguration +* headerConfiguration +* footerConfiguration +* supplementaryConfiguration + +## Breaking changes + +`beforeContentUpdate` and `afterContentUpdate` closures were replaced with `DTCollectionViewContentUpdatable` protocol, that can be adopted by your `DTCollectionViewManageable` class, for example: + +```swift +extension PostsViewController: DTCollectionViewContentUpdatable { + func afterContentUpdate() { + // Do something + } +} +``` + +## [4.0.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/4.0.0) + +4.0 is a next major release of `DTCollectionViewManager`. It was rewritten from scratch in Swift 2 and is not backwards-compatible with previous releases. + +Read [4.0 Migration guide](https://github.com/DenHeadless/DTCollectionViewManager/wiki/4.0-Migration-Guide). + +[Blog post](http://digginginswift.com/2015/09/13/dttableviewmanager-4-protocol-oriented-uitableview-management-in-swift/) + +### Features + +* Improved `ModelTransfer` protocol with associated `ModelType` +* `DTCollectionViewManager` is now a separate object +* New events system, that allows reacting to cell selection, cell/header/footer configuration and content updates +* Added support for `UICollectionViewController`, and any other object, that has `UICollectionView` +* New storage object generic-type getters +* Support for Swift types - classes, structs, enums, tuples. + + +## [3.2.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/3.2.0) + +### Bugfixes + +* Fixed an issue, where storageDidPerformUpdate method could be called without any updates. + +## [3.1.1](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/3.1.1) + +* Added support for installation using [Carthage](https://github.com/Carthage/Carthage) :beers: + +## [3.1.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/3.1.0) + +## Changes + +* Added nullability annotations for XCode 6.3 and Swift 1.2 + +## [3.0.5](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/3.0.5) + +## Bugfixes + +Fixed issue, that could lead to wrong collection items being removed, when using memory storage removeItemsAtIndexPaths: method. + +## [3.0.2](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/3.0.2) + +## Features + +Added support for installation as a framework via CocoaPods - requires iOS 8 and higher deployment target. + +## [3.0.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/3.0.0) + +3.0 is a next major release of DTCollectionViewManager. Read all about changes in detail on a [wiki page](https://github.com/DenHeadless/DTCollectionViewManager/wiki/DTCollectionViewManager-3.0.-What's-new%3F). + +### Features +* Full Swift support, including swift model classes +* Added convenience method to update section items +* Added `DTCollectionViewControllerEvents` protocol, that allows developer to react to changes in datasource +* Added several convenience method for UICollectionViewFlowLayout. The API for supplementary header and footer registration now matches the API of DTTableViewManager. +* Added `collectionHeaderModel` and `collectionFooterModel` accessors for `DTSectionModel`. + +### Breaking changes + +* `DTStorage` protocol was renamed to `DTStorageProtocol`. + +## [2.7.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.7.0) + +This is a release, that is targeted at improving code readability, and reducing number of classes and protocols inside DTCollectionViewManager architecture. + +### Breaking changes + +* `DTCollectionViewMemoryStorage` class was removed. It's methods were transferred to `DTMemoryStorage+DTCollectionViewManagerAdditions` category. +* `DTCollectionViewStorageUpdating` protocol was removed. It's methods were moved to `DTCollectionViewController`. + +### Features + +* When using `DTCoreDataStorage`, section titles are displayed as headers by default(UICollectionElementKindSectionHeader), if NSFetchedController was created with sectionNameKeyPath property. + + +## [2.6.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.6.0) + +## Features + +Add ability to use custom xibs for collection view cells and supplementary views. + +## [2.5.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.5.0) + +### Changes + +Preliminary support for Swift. + +If you use cells or supplementary views inside storyboards from Swift, implement optional reuseIdentifier method to return real Swift class name instead of the mangled one. This name should also be set as reuseIdentifier in storyboard. + +## [2.4.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.4.0) + +### Breaking changes + +Reuse identifier now needs to be identical to cell, header or footer class names. For example, UserTableCell should now have "UserTableCell" reuse identifier. + +## [2.3.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.3.0) + +### Deprecations + +Removed `DTModelSearching` protocol, please use `DTMemoryStorage` `setSearchingBlock:forModelClass:` method instead. + +## [2.2.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.2.0) + +* `DTModelSearching` protocol is deprecated and is replaced by memoryStorage method setSearchingBlock:forModelClass: +* UICollectionViewDatasource and UICollectionViewDelegate properties for UITableView are now filled automatically. +* Added more assertions, programmer errors should be more easily captured. + +## [2.0.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.0.0) + +* DTModelTransfer and DTModelSearching protocols are now moved to DTModelStorage repo. +* Implemented searching in UICollectionView + +## [2.0.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/2.0.0) + +- Added support for custom storage classes +- Current storage classes moved to separate repo(DTModelStorage) +- Complete rewrite of internal architecture + +## [1.1.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/1.1.0) + +### Features + +* Added support for storyboard cell, header and footer prototyping +* Dropped support for creating cells, headers and footers from code + +## [1.0.0](https://github.com/DenHeadless/DTCollectionViewManager/releases/tag/1.0.0) + +First release of DTCollectionViewManager, woohoo! + +#### Features +* Clean mapping system +* Easy API for collection models manipulation +* Foundation types support +* Full iOS 7 support! diff --git a/README.md b/README.md index a8f1ee6..68c994c 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,11 @@ Powerful protocol-oriented UICollectionView management framework, written in Swi [CocoaPods](http://www.cocoapods.org): - pod 'DTCollectionViewManager', '~> 4.1.0' + pod 'DTCollectionViewManager', '~> 4.2.0' [Carthage](https://github.com/Carthage/Carthage): - github "DenHeadless/DTCollectionViewManager" + github "DenHeadless/DTCollectionViewManager" ~> 4.2.0 After running `carthage update` drop DTCollectionViewManager.framework and DTModelStorage.framework to XCode project embedded binaries. @@ -217,15 +217,15 @@ extension PostsViewController: DTCollectionViewContentUpdatable { There are several convenience model getters, that will allow you to get data model from storage classes. Those include cell, header or footer class types to gather type information and being able to return model of correct type. Again, no need for type casts. ```swift - let post = manager.objectForCellClass(PostCell.self, atIndexPath: indexPath) - let postHeaderModel = manager.objectForHeaderClass(PostHeaderClass.self, atSectionIndex: sectionIndex) - let postFooterModel = manager.objectForFooterClass(PostFooterClass.self, atSectionIndex: sectionIndex) + let post = manager.itemForCellClass(PostCell.self, atIndexPath: indexPath) + let postHeaderModel = manager.itemForHeaderClass(PostHeaderClass.self, atSectionIndex: sectionIndex) + let postFooterModel = manager.itemForFooterClass(PostFooterClass.self, atSectionIndex: sectionIndex) ``` There's also convenience getter, that will allow you to get model from visible `UICollectionViewCell`. ```swift - let post = manager.objectForVisibleCell(postCell) + let post = manager.itemForVisibleCell(postCell) ``` ## ObjectiveC