mirror of
https://github.com/tappollo/IGListKit.git
synced 2026-01-12 22:45:13 +08:00
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
59 lines
2.3 KiB
Swift
59 lines
2.3 KiB
Swift
/**
|
|
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
|
|
|
The examples provided by Facebook are for non-commercial testing and evaluation
|
|
purposes only. Facebook reserves all rights not expressly granted.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
import UIKit
|
|
import IGListKit
|
|
|
|
final class DisplaySectionController: IGListSectionController, IGListDisplayDelegate {
|
|
|
|
override init() {
|
|
super.init()
|
|
displayDelegate = self
|
|
inset = UIEdgeInsets(top: 0, left: 0, bottom: 30, right: 0)
|
|
}
|
|
|
|
override func numberOfItems() -> Int {
|
|
return 4
|
|
}
|
|
|
|
override func sizeForItem(at index: Int) -> CGSize {
|
|
return CGSize(width: collectionContext!.containerSize.width, height: 55)
|
|
}
|
|
|
|
override func cellForItem(at index: Int) -> UICollectionViewCell {
|
|
let cell = collectionContext!.dequeueReusableCell(of: LabelCell.self, for: self, at: index) as! LabelCell
|
|
cell.text = "Section \(self.sectionIndex), cell \(index)"
|
|
return cell
|
|
}
|
|
|
|
// MARK: IGListDisplayDelegate
|
|
|
|
func listAdapter(_ listAdapter: IGListAdapter, willDisplay sectionController: IGListSectionController) {
|
|
print("Will display section \(self.sectionIndex)")
|
|
}
|
|
|
|
func listAdapter(_ listAdapter: IGListAdapter, willDisplay sectionController: IGListSectionController, cell: UICollectionViewCell, at index: Int) {
|
|
print("Did will display cell \(index) in section \(self.sectionIndex)")
|
|
}
|
|
|
|
func listAdapter(_ listAdapter: IGListAdapter, didEndDisplaying sectionController: IGListSectionController) {
|
|
print("Did end displaying section \(self.sectionIndex)")
|
|
}
|
|
|
|
func listAdapter(_ listAdapter: IGListAdapter, didEndDisplaying sectionController: IGListSectionController, cell: UICollectionViewCell, at index: Int) {
|
|
print("Did end displaying cell \(index) in section \(self.sectionIndex)")
|
|
}
|
|
|
|
}
|