IGListKit/Examples/Examples-iOS/IGListKitExamples/SectionControllers/HorizontalSectionController.swift

52 lines
1.5 KiB
Swift
Raw Normal View History

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import IGListKit
import UIKit
final class HorizontalSectionController: ListSectionController, ListAdapterDataSource {
private var number: Int?
lazy var adapter: ListAdapter = {
let adapter = ListAdapter(updater: ListAdapterUpdater(),
viewController: self.viewController)
adapter.dataSource = self
return adapter
}()
override func sizeForItem(at index: Int) -> CGSize {
return CGSize(width: collectionContext!.containerSize.width, height: 100)
}
override func cellForItem(at index: Int) -> UICollectionViewCell {
let cell: EmbeddedCollectionViewCell = collectionContext.dequeueReusableCell(for: self, at: index)
adapter.collectionView = cell.collectionView
return cell
}
override func didUpdate(to object: Any) {
number = object as? Int
}
// MARK: ListAdapterDataSource
func objects(for listAdapter: ListAdapter) -> [ListDiffable] {
guard let number = number else { return [] }
return (0..<number).map { $0 as ListDiffable }
}
func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController {
return EmbeddedSectionController()
}
func emptyView(for listAdapter: ListAdapter) -> UIView? {
return nil
}
}