IGListKit/Source/IGListSectionController.h
Ryan Nystrom 394760081c Add isLast/FirstSection API to IGListSectionController
Summary: Product needs show that section controllers need some sort of awarenes when they are the first/last section in a list (e.g. for cell borders). Adding this simple API, non-breaking.

Reviewed By: jessesquires

Differential Revision: D4016023

fbshipit-source-id: c75f9298fc73875a1cabad191fe2db6cb9ee4376
2016-10-13 12:44:12 -07:00

104 lines
3.5 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/IGListCollectionContext.h>
#import <IGListKit/IGListDisplayDelegate.h>
#import <IGListKit/IGListScrollDelegate.h>
#import <IGListKit/IGListSupplementaryViewSource.h>
#import <IGListKit/IGListWorkingRangeDelegate.h>
/**
The base class for section controllers used in the list infra. This class is meant to be subclassed.
*/
@interface IGListSectionController : NSObject
/**
The view controller housing the adapter that created this section controller.
@discussion Use this view controller to push, pop, present, or do other custom transitions. It is considered very bad
practice to cast this to a known view controller and call methods on it other than for navigations and transitions.
*/
@property (nonatomic, weak, nullable, readonly) UIViewController *viewController;
/**
A context object for interacting with the collection i.e. accessing the collection size, dequeing cells,
reloading/inserting/deleting, etc.
*/
@property (nonatomic, weak, nullable, readonly) id <IGListCollectionContext> collectionContext;
/**
Returns YES if the section controller is the first section in the list.
*/
@property (nonatomic, assign, readonly) BOOL isFirstSection;
/**
Returns YES if the section controller is the last section in the list.
*/
@property (nonatomic, assign, readonly) BOOL isLastSection;
/**
The margins used to lay out content in the section controller.
@see -[UICollectionViewFlowLayout sectionInset]
*/
@property (nonatomic, assign) UIEdgeInsets inset;
/**
The minimum spacing to use between rows of items.
@see -[UICollectionViewFlowLayout minimumLineSpacing]
*/
@property (nonatomic, assign) CGFloat minimumLineSpacing;
/**
The minimum spacing to use between items in the same row.
@see -[UICollectionViewFlowLayout minimumInteritemSpacing]
*/
@property (nonatomic, assign) CGFloat minimumInteritemSpacing;
/**
The supplementary view source for the section controller. Can be nil.
@return An object that conforms to IGListSupplementaryViewSource or nil.
@discussion You may wish to return self if your section controller implements this protocol.
*/
@property (nonatomic, weak, nullable) id <IGListSupplementaryViewSource> supplementaryViewSource;
/**
An object that handles display events for the section controller. Can be nil.
@return An object that conforms to IGListDisplayDelegate or nil.
@discussion You may wish to return self if your section controller implements this protocol.
*/
@property (nonatomic, weak, nullable) id <IGListDisplayDelegate> displayDelegate;
/**
An object that handles working range events for the section controller. Can be nil.
@return An object that conforms to IGListWorkingRangeDelegate or nil.
@discussion You may wish to return self if your section controller implements this protocol.
*/
@property (nonatomic, weak, nullable) id <IGListWorkingRangeDelegate> workingRangeDelegate;
/**
An object that handles display events for the section controller. Can be nil.
@return An object that conforms to IGListDisplayDelegate or nil.
@discussion You may wish to return self if your section controller implements this protocol.
*/
@property (nonatomic, weak, nullable) id <IGListScrollDelegate> scrollDelegate;
@end