Move section index to property

Summary:
This pull request removes the `sectionForSectionController:` method from the `IGListCollectionContext` protocol so that the protocol is exclusively for presentation methods.

This should not add new functionality, but rather makes the index directly accessible on the section controllers themselves. This change makes sense because at no time will there be an update to the list that the list adapter is unaware of and so it will always be able to set and update any indexes for a section controller that has changed.

Issue fixed: #609

- [X] All tests pass. Demo project builds and runs.
- [X] I added tests, an experiment, or detailed why my change isn't tested.
- [X] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes.
- [X] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md)
Closes https://github.com/Instagram/IGListKit/pull/671

Reviewed By: jessesquires

Differential Revision: D4942159

Pulled By: amonshiz

fbshipit-source-id: d648cfdd381cbf1d9ee7ff549ae27d2972a84622
This commit is contained in:
Andrew Monshizadeh
2017-05-01 07:10:52 -07:00
committed by Facebook Github Bot
parent f1ebfbdb7d
commit a4e5ad862e
19 changed files with 699 additions and 523 deletions

View File

@@ -33,31 +33,26 @@ final class DisplaySectionController: IGListSectionController, IGListDisplayDele
override func cellForItem(at index: Int) -> UICollectionViewCell {
let cell = collectionContext!.dequeueReusableCell(of: LabelCell.self, for: self, at: index) as! LabelCell
let section = collectionContext!.section(for: self)
cell.text = "Section \(section), cell \(index)"
cell.text = "Section \(self.sectionIndex), cell \(index)"
return cell
}
// MARK: IGListDisplayDelegate
func listAdapter(_ listAdapter: IGListAdapter, willDisplay sectionController: IGListSectionController) {
let section = collectionContext!.section(for: self)
print("Will display section \(section)")
print("Will display section \(self.sectionIndex)")
}
func listAdapter(_ listAdapter: IGListAdapter, willDisplay sectionController: IGListSectionController, cell: UICollectionViewCell, at index: Int) {
let section = collectionContext!.section(for: self)
print("Did will display cell \(index) in section \(section)")
print("Did will display cell \(index) in section \(self.sectionIndex)")
}
func listAdapter(_ listAdapter: IGListAdapter, didEndDisplaying sectionController: IGListSectionController) {
let section = collectionContext!.section(for: self)
print("Did end displaying section \(section)")
print("Did end displaying section \(self.sectionIndex)")
}
func listAdapter(_ listAdapter: IGListAdapter, didEndDisplaying sectionController: IGListSectionController, cell: UICollectionViewCell, at index: Int) {
let section = collectionContext!.section(for: self)
print("Did end displaying cell \(index) in section \(section)")
print("Did end displaying cell \(index) in section \(self.sectionIndex)")
}
}