[ASTableNode] expose ASTableView's -visibleNodes (#2449)

* expose ASTableView's -visibleNodes getter at the ASTableNode level

* add safegaurds

* make visibleNodes a read only property for ASTableNode

* make collectionNode .visibleNodes property
This commit is contained in:
Hannah Troisi 2016-10-24 09:42:04 -07:00 committed by Adlai Holler
parent 3638feffd4
commit 97e23776e4
4 changed files with 17 additions and 3 deletions

View File

@ -335,9 +335,9 @@ NS_ASSUME_NONNULL_BEGIN
/**
* Similar to -visibleCells.
*
* @return an array containing the nodes being displayed on screen.
* @return an array containing the nodes being displayed on screen. This must be called on the main thread.
*/
- (NSArray<__kindof ASCellNode *> *)visibleNodes AS_WARN_UNUSED_RESULT;
@property(readonly, copy) NSArray<__kindof ASCellNode *> *visibleNodes;
/**
* Retrieves the node for the item at the given index path.

View File

@ -349,7 +349,8 @@
- (NSArray<__kindof ASCellNode *> *)visibleNodes
{
return [self.view visibleNodes];
ASDisplayNodeAssertMainThread();
return self.isNodeLoaded ? [self.view visibleNodes] : @[];
}
- (NSIndexPath *)indexPathForNode:(ASCellNode *)cellNode

View File

@ -339,6 +339,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (NSInteger)tableNode:(ASTableNode *)tableNode numberOfRowsInSection:(NSInteger)section;
/**
* Similar to -visibleCells.
*
* @return an array containing the nodes being displayed on screen. This must be called on the main thread.
*/
@property(readonly, copy) NSArray<__kindof ASCellNode *> *visibleNodes;
/**
* Asks the data source for a block to create a node to represent the row at the given index path.
* The block will be run by the table node concurrently in the background before the row is inserted

View File

@ -371,6 +371,12 @@ ASEnvironmentCollectionTableSetEnvironmentState(_environmentStateLock)
return [self.dataController numberOfSections];
}
- (NSArray<__kindof ASCellNode *> *)visibleNodes
{
ASDisplayNodeAssertMainThread();
return self.isNodeLoaded ? [self.view visibleNodes] : @[];
}
- (NSIndexPath *)indexPathForNode:(ASCellNode *)cellNode
{
return [self.dataController indexPathForNode:cellNode];