DTCollectionViewManager v5.0.0-beta.1 Release Notes

  • ๐Ÿš€ This is a major release, written in Swift 3. Read Migration guide with descriptions of all features and changes.

    ๐Ÿš€ Dependency changelog -> DTModelStorage 3.0.0 and higher

    โž• Added

    • ๐Ÿ†• New events system that covers almost all available UICollectionViewDelegate, UICollectionViewDataSource and UICollectionViewDelegateFlowLayout delegate methods.
    • ๐Ÿ†• New class - CollectionViewUpdater, that is calling all animation methods for UICollectionView when required by underlying storage.
    • โšก๏ธ updateCellClosure method on DTCollectionViewManager, that manually updates visible cell instead of calling collectionView.reloadItemsAt(_:) method.
    • โšก๏ธ coreDataUpdater property on DTCollectionViewManager, that creates CollectionViewUpdater object, that follows Apple's guide for updating UICollectionView from NSFetchedResultsControllerDelegate events.
    • isManagingCollectionView property on DTCollectionViewManager.
    • unregisterCellClass(_:), unregisterHeaderClass(_:), unregisterFooterClass(_:), unregisterSupplementaryClass(_:forKind:) methods to unregister mappings from DTCollectionViewManager and UICollectionView

    ๐Ÿ”„ Changed

    • Swift 3 API Design guidelines have been applied to all public API.
    • Event system is migrated to new EventReaction class from DTModelStorage
    • Now all view registration methods use NSBundle(forClass:) constructor, instead of falling back on DTCollectionViewManager viewBundle property. This allows having cells from separate bundles or frameworks to be used with single DTCollectionViewManager instance.


    • viewBundle property on DTCollectionViewManager
    • ๐Ÿšš itemForVisibleCell, itemForCellClass:atIndexPath:, itemForHeaderClass:atSectionIndex:, itemForFooterClass:atSectionIndex: were removed - they were not particularly useful and can be replaced with much shorter Swift conditional typecasts.
    • All events methods with method pointer semantics. Please use block based methods instead.
    • registerCellClass:whenSelected method, that was tightly coupling something that did not need coupling.