Move ASSectionController and ASSupplementaryNodeSource method to be optional (#1302)

This commit is contained in:
Michael Schneider 2019-02-20 11:21:47 -08:00 committed by GitHub
parent d4a1242052
commit 8edb5a45d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 10 deletions

View File

@ -16,13 +16,14 @@ NS_ASSUME_NONNULL_BEGIN
@class ASBatchContext;
/**
* A protocol that your section controllers should conform to,
* in order to be used with AsyncDisplayKit.
* A protocol that your section controllers should conform to, in order to be used with Texture.
*
* @note Your supplementary view source should conform to @c ASSupplementaryNodeSource.
*/
@protocol ASSectionController <NSObject>
@optional
/**
* A method to provide the node block for the item at the given index.
* The node block you return will be run asynchronously off the main thread,
@ -48,8 +49,6 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (ASCellNode *)nodeForItemAtIndex:(NSInteger)index;
@optional
/**
* Asks the section controller whether it should batch fetch because the user is
* near the end of the current data set.

View File

@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN
@protocol ASSupplementaryNodeSource <NSObject>
@optional
/**
* A method to provide the node-block for the supplementary element.
*
@ -33,8 +35,6 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (ASCellNode *)nodeForSupplementaryElementOfKind:(NSString *)kind atIndex:(NSInteger)index;
@optional
/**
* A method to provide the size range used for measuring the supplementary
* element of the given kind at the given index.

View File

@ -215,12 +215,16 @@ typedef struct {
- (ASCellNodeBlock)collectionNode:(ASCollectionNode *)collectionNode nodeBlockForItemAtIndexPath:(NSIndexPath *)indexPath
{
return [[self sectionControllerForSection:indexPath.section] nodeBlockForItemAtIndex:indexPath.item];
ASIGSectionController *ctrl = [self sectionControllerForSection:indexPath.section];
ASDisplayNodeAssert([ctrl respondsToSelector:@selector(nodeBlockForItemAtIndex:)], @"Expected section controller to respond to to %@. Controller: %@", NSStringFromSelector(@selector(nodeBlockForItemAtIndex:)), ctrl);
return [ctrl nodeBlockForItemAtIndex:indexPath.item];
}
- (ASCellNode *)collectionNode:(ASCollectionNode *)collectionNode nodeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return [[self sectionControllerForSection:indexPath.section] nodeForItemAtIndex:indexPath.item];
ASIGSectionController *ctrl = [self sectionControllerForSection:indexPath.section];
ASDisplayNodeAssert([ctrl respondsToSelector:@selector(nodeForItemAtIndex:)], @"Expected section controller to respond to to %@. Controller: %@", NSStringFromSelector(@selector(nodeForItemAtIndex:)), ctrl);
return [ctrl nodeForItemAtIndex:indexPath.item];
}
- (ASSizeRange)collectionNode:(ASCollectionNode *)collectionNode constrainedSizeForItemAtIndexPath:(NSIndexPath *)indexPath
@ -235,12 +239,16 @@ typedef struct {
- (ASCellNodeBlock)collectionNode:(ASCollectionNode *)collectionNode nodeBlockForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
return [[self supplementaryElementSourceForSection:indexPath.section] nodeBlockForSupplementaryElementOfKind:kind atIndex:indexPath.item];
id<ASSupplementaryNodeSource> ctrl = [self supplementaryElementSourceForSection:indexPath.section];
ASDisplayNodeAssert([ctrl respondsToSelector:@selector(nodeBlockForSupplementaryElementOfKind:atIndex:)], @"Expected section controller to respond to to %@. Controller: %@", NSStringFromSelector(@selector(nodeBlockForSupplementaryElementOfKind:atIndex:)), ctrl);
return [ctrl nodeBlockForSupplementaryElementOfKind:kind atIndex:indexPath.item];
}
- (ASCellNode *)collectionNode:(ASCollectionNode *)collectionNode nodeForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
return [[self supplementaryElementSourceForSection:indexPath.section] nodeForSupplementaryElementOfKind:kind atIndex:indexPath.item];
id<ASSupplementaryNodeSource> ctrl = [self supplementaryElementSourceForSection:indexPath.section];
ASDisplayNodeAssert([ctrl respondsToSelector:@selector(nodeForSupplementaryElementOfKind:atIndex:)], @"Expected section controller to respond to to %@. Controller: %@", NSStringFromSelector(@selector(nodeForSupplementaryElementOfKind:atIndex:)), ctrl);
return [ctrl nodeForSupplementaryElementOfKind:kind atIndex:indexPath.item];
}
- (NSArray<NSString *> *)collectionNode:(ASCollectionNode *)collectionNode supplementaryElementKindsInSection:(NSInteger)section