     }
     
     @objc func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
-        if self.isFiltering {
+        if self.isFiltering || self.shouldReloadData {
             return
         }
 

            return
        }

        self.collectionView?.performBatchUpdates({
            [weak self] in
            
            if let actions = self?.pendingActions where !actions.isEmpty {
                self?.pendingActions.removeAll()
                for action in actions {
                    action()
                }
            }
            
            if let indexPaths = self?.updatedIndexPaths where !indexPaths.isEmpty {
                self?.updatedIndexPaths.removeAll()
                self?.collectionView?.reloadItemsAtIndexPaths(Array(indexPaths))
            }
        }, completion: {
            [weak self] _ in
            
            self?.provider?.onDataChanged?()
        })
    }

        case .Delete:
            self.pendingActions.append() {
                [weak self] in
                self?.collectionView?.deleteSections(NSIndexSet(index: sectionIndex))
                self?.collectionView?.collectionViewLayout.invalidateLayout()
            }
