IGListBindingSectionController
Objective-C
@interface IGListBindingSectionController<
    __covariant ObjectType : id <IGListDiffable>> : IGListSectionController
                Swift
class ListBindingSectionController<ObjectType> : ListSectionController where ObjectType : ListDiffable
                This section controller uses a data source to transform its “top level” object into an array of diffable view models.
It then automatically binds each view model to cells via the IGListBindable protocol.
Models used with IGListBindingSectionController should take special care to always return YES for identical
objects. That is, any objects with matching -diffIdentifiers should always be equal, that way the section controller
can create new view models via the data source, create a diff, and update the specific cells that have changed.
In Objective-C, your -isEqualToDiffableObject: can simply be:
- (BOOL)isEqualToDiffableObject:(id)object {
  return YES;
}
In Swift:
func isEqual(toDiffableObject object: IGListDiffable?) -> Bool {
  return true
}
Only when -diffIdentifiers match is object equality compared, so you can assume the class is the same, and the
instance has already been checked.
- 
                  
                  
A data source that transforms a top-level object into view models, and returns cells and sizes for given view models.
Declaration
Objective-C
@property (nonatomic, weak, nullable) id<IGListBindingSectionControllerDataSource> dataSource;Swift
weak var dataSource: (any ListBindingSectionControllerDataSource)? { get set } - 
                  
                  
A delegate that receives selection events from cells in an
IGListBindingSectionControllerinstance.Declaration
Objective-C
@property (nonatomic, weak, nullable) id<IGListBindingSectionControllerSelectionDelegate> selectionDelegate;Swift
weak var selectionDelegate: (any ListBindingSectionControllerSelectionDelegate)? { get set } - 
                  
                  
The object currently assigned to the section controller, if any.
Declaration
Objective-C
@property (nonatomic, strong, readonly, nullable) ObjectType object;Swift
var object: ObjectType? { get } - 
                  
                  
The array of view models created from the data source. Values are changed when the top-level object changes or by calling
-updateAnimated:completion:manually.Declaration
Objective-C
@property (nonatomic, copy, readonly) NSArray<id<IGListDiffable>> *_Nonnull viewModels;Swift
var viewModels: [any ListDiffable] { get } - 
                  
                  
Tells the section controller to query for new view models, diff the changes, and update its cells.
Declaration
Objective-C
- (void)updateAnimated:(BOOL)animated completion:(nullable void (^)(BOOL))completion;Swift
func update(animated: Bool) async -> BoolParameters
animatedA flag indicating if the transition should be animated or not.
completionAn optional completion block executed after updates finish. Parameter is YES if updates were applied.
 - 
                  
                  
Notifies the section that a list object should move within a section as the result of interactive reordering.
Note
this method must be implemented if interactive reordering is enabled. To ensure updating the internal viewModels array, calling super is required, preferably before your own implementation.
Declaration
Objective-C
- (void)moveObjectFromIndex:(NSInteger)sourceIndex toIndex:(NSInteger)destinationIndex;Swift
func moveObject(from sourceIndex: Int, to destinationIndex: Int)Parameters
sourceIndexThe starting index of the object.
destinationIndexThe ending index of the object.
 
View on GitHub