# IGListBindingSectionControllerDataSource Protocol Reference

# IGListBindingSectionControllerDataSource

    @protocol IGListBindingSectionControllerDataSource <NSObject>

A protocol that returns data to power cells in an `IGListBindingSectionController`.

- `-sectionController:viewModelsForObject:`

  Create an array of view models given a top-level object.

  #### Declaration

  Objective-C

      - (nonnull NSArray<id<IGListDiffable>> *)
        sectionController:(nonnull IGListBindingSectionController *)sectionController
      viewModelsForObject:(nonnull id)object;

  #### Parameters

  `sectionController` | The section controller requesting view models.
  `object` | The top-level object that powers the section controller.

  #### Return Value

  A new array of view models.

- `-sectionController:cellForViewModel:atIndex:`

  Return a dequeued cell for a given view model.

  Note

  The section controller will call `-bindViewModel:` with the provided view model after the cell is dequeued. You should handle cell configuration using this method. However, you can do additional configuration at this stage as well.

  #### Declaration

  Objective-C

      - (nonnull UICollectionViewCell<IGListBindable> *)
      sectionController:(nonnull IGListBindingSectionController *)sectionController
       cellForViewModel:(nonnull id)viewModel
                atIndex:(NSInteger)index;

  Swift

      func sectionController(_ sectionController: IGListBindingSectionController, cellForViewModel viewModel: Any, at index: Int) -> Any!

  #### Parameters

  `sectionController` | The section controller requesting a cell.
  `viewModel` | The view model for the cell.
  `index` | The index of the view model.

  #### Return Value

  A dequeued cell.

- `-sectionController:sizeForViewModel:atIndex:`

  Return a cell size for a given view model.

  #### Declaration

  Objective-C

      - (CGSize)sectionController:
                    (nonnull IGListBindingSectionController *)sectionController
                 sizeForViewModel:(nonnull id)viewModel
                          atIndex:(NSInteger)index;

  Swift

      func sectionController(_ sectionController: IGListBindingSectionController, sizeForViewModel viewModel: Any, at index: Int) -> Any!

  #### Parameters

  `sectionController` | The section controller requesting a size.
  `viewModel` | The view model for the cell.
  `index` | The index of the view model.

  #### Return Value

  A size for the view model.

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

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