diff --git a/AsyncDisplayKit/Details/ASDataController.h b/AsyncDisplayKit/Details/ASDataController.h index d7beb4f23f..1a17e3dd3f 100644 --- a/AsyncDisplayKit/Details/ASDataController.h +++ b/AsyncDisplayKit/Details/ASDataController.h @@ -76,12 +76,11 @@ extern NSString * const ASCollectionInvalidUpdateException; */ @protocol ASDataControllerDelegate -@optional - /** Called for batch update. */ - (void)dataControllerBeginUpdates:(ASDataController *)dataController; +- (void)dataControllerWillDeleteAllData:(ASDataController *)dataController; - (void)dataController:(ASDataController *)dataController endUpdatesAnimated:(BOOL)animated completion:(void (^ _Nullable)(BOOL))completion; /** diff --git a/AsyncDisplayKit/Details/ASDataController.mm b/AsyncDisplayKit/Details/ASDataController.mm index 055883b83c..dcecd867ee 100644 --- a/AsyncDisplayKit/Details/ASDataController.mm +++ b/AsyncDisplayKit/Details/ASDataController.mm @@ -452,6 +452,7 @@ - (void)_reloadDataWithAnimationOptions:(ASDataControllerAnimationOptions)animat // -beginUpdates [_mainSerialQueue performBlockOnMainThread:^{ [_delegate dataControllerBeginUpdates:self]; + [_delegate dataControllerWillDeleteAllData:self]; }]; // deleteSections: diff --git a/AsyncDisplayKit/Details/ASRangeController.mm b/AsyncDisplayKit/Details/ASRangeController.mm index d94c1498a6..874adc3c5c 100644 --- a/AsyncDisplayKit/Details/ASRangeController.mm +++ b/AsyncDisplayKit/Details/ASRangeController.mm @@ -476,6 +476,11 @@ - (void)dataControllerBeginUpdates:(ASDataController *)dataController [_delegate didBeginUpdatesInRangeController:self]; } +- (void)dataControllerWillDeleteAllData:(ASDataController *)dataController +{ + [self _setVisibleNodes:nil]; +} + - (void)dataController:(ASDataController *)dataController endUpdatesAnimated:(BOOL)animated completion:(void (^)(BOOL))completion { ASDisplayNodeAssertMainThread();