# IGListBindingSectionController Class Reference

# IGListBindingSectionController

    @interface IGListBindingSectionController < __covariant ObjectType
        : id <IGListDiffable>
    > : IGListSectionController @end

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 `-diffIdentifier`s 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 `-diffIdentifier`s match is object equality compared, so you can assume the class is the same, and the instance has already been checked.

- `dataSource`

  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 (readwrite, nonatomic, nullable)
          id<IGListBindingSectionControllerDataSource>
              dataSource;

- `selectionDelegate`

  A delegate that receives selection events from cells in an `IGListBindingSectionController` instance.

  #### Declaration

  Objective-C

      @property (readwrite, nonatomic, nullable)
          id<IGListBindingSectionControllerSelectionDelegate>
              selectionDelegate;

- `object`

  The object currently assigned to the section controller, if any.

  #### Declaration

  Objective-C

      @property (readonly, strong, nonatomic, nullable) ObjectType object;

- `viewModels`

  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 (readonly, strong, nonatomic)
          NSArray<id<IGListDiffable>> *_Nonnull viewModels;

- `-updateAnimated:completion:`

  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;

  #### Parameters

  `animated` | A flag indicating if the transition should be animated or not.
  `completion` | An optional completion block executed after updates finish. Parameter is YES if updates were applied.

© 2018 Instagram. All rights reserved. (Last updated: 2018-05-01)

Generated by jazzy ♪♫ v0.9.1, a Realm project.