IGListKit/Source/Internal/IGListDisplayHandler.h
Ryan Nystrom 4eddd4a191 Consider supplementary views when sending display events
Summary:
This was a little bit of an invasive change with the display handler, but I think that this is the right call. When sending display events for objects, we should account for the supplementary view as part of the section controller. This is especially useful for headers and footers.

Note that this wont effect the working range API at all.

Fixes #300
Closes https://github.com/Instagram/IGListKit/pull/470

Differential Revision: D4551338

Pulled By: rnystrom

fbshipit-source-id: dda6fbf18bcfc2c941d80ee2314a543d1ab83843
2017-02-13 07:01:13 -08:00

84 lines
3.4 KiB
Objective-C

/**
* Copyright (c) 2016-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#import <UIKit/UIKit.h>
#import <IGListKit/IGListMacros.h>
@class IGListAdapter;
@class IGListSectionController;
@protocol IGListSectionType;
NS_ASSUME_NONNULL_BEGIN
IGLK_SUBCLASSING_RESTRICTED
@interface IGListDisplayHandler : NSObject
/**
Tells the handler that a cell will be displayed in the IGListAdapter.
@param cell A cell that will be displayed.
@param listAdapter The adapter the cell will display in.
@param sectionController The section controller that manages the cell.
@param object The object that powers the section controller.
@param indexPath The index path of the cell in the UICollectionView.
*/
- (void)willDisplayCell:(UICollectionViewCell *)cell
forListAdapter:(IGListAdapter *)listAdapter
sectionController:(IGListSectionController<IGListSectionType> *)sectionController
object:(id)object
indexPath:(NSIndexPath *)indexPath;
/**
Tells the handler that a cell did end display in the IGListAdapter.
@param cell A cell that will be displayed.
@param listAdapter The adapter the cell will display in.
@param sectionController The section controller that manages the cell.
@param indexPath The index path of the cell in the UICollectionView.
*/
- (void)didEndDisplayingCell:(UICollectionViewCell *)cell
forListAdapter:(IGListAdapter *)listAdapter
sectionController:(IGListSectionController<IGListSectionType> *)sectionController
indexPath:(NSIndexPath *)indexPath;
/**
Tells the handler that a supplementary view will be displayed in the IGListAdapter.
@param view A supplementary view that will be displayed.
@param listAdapter The adapter the supplementary view will display in.
@param sectionController The section controller that manages the supplementary view.
@param object The object that powers the section controller.
@param indexPath The index path of the supplementary view in the UICollectionView.
*/
- (void)willDisplaySupplementaryView:(UICollectionReusableView *)view
forListAdapter:(IGListAdapter *)listAdapter
sectionController:(IGListSectionController<IGListSectionType> *)sectionController
object:(id)object
indexPath:(NSIndexPath *)indexPath;
/**
Tells the handler that a supplementary view did end display in the IGListAdapter.
@param view A supplementary view that will be displayed.
@param listAdapter The adapter the supplementary view will display in.
@param sectionController The section controller that manages the supplementary view.
@param indexPath The index path of the supplementary view in the UICollectionView.
*/
- (void)didEndDisplayingSupplementaryView:(UICollectionReusableView *)view
forListAdapter:(IGListAdapter *)listAdapter
sectionController:(IGListSectionController<IGListSectionType> *)sectionController
indexPath:(NSIndexPath *)indexPath;
@end
NS_ASSUME_NONNULL_END