Skip to content

Commit

Permalink
add changelog, update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
DenTelezhkin committed Oct 11, 2015
1 parent 602da44 commit 340c8ca
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 6 deletions.
194 changes: 194 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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!
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 340c8ca

Please sign in to comment.