// // RxCollectionViewSectionedAnimatedDataSource.swift // RxExample // // Created by Krunoslav Zaher on 7/2/15. // Copyright (c) 2015 Krunoslav Zaher. All rights reserved. // import Foundation import UIKit #if !RX_NO_MODULE import RxSwift import RxCocoa #endif class RxCollectionViewSectionedAnimatedDataSource : RxCollectionViewSectionedDataSource , RxCollectionViewDataSourceType { typealias Element = [Changeset] // For some inexplicable reason, when doing animated updates first time // it crashes. Still need to figure out that one. var set = false func collectionView(collectionView: UICollectionView, observedEvent: Event) { switch observedEvent { case .Next(let boxedSections): for c in boxedSections.value { //println("Animating ==============================\n\(c)\n===============================\n") if !set { setSections(c.finalSections) collectionView.reloadData() set = true return } setSections(c.finalSections) collectionView.performBatchUpdates(c) } case .Error(let error): #if DEBUG fatalError("Binding error to UI") #endif case .Completed: break } } }