CollectionViewDriver
@MainActor
public final class CollectionViewDriver : NSObject
extension CollectionViewDriver: UICollectionViewDelegate
extension CollectionViewDriver: UIScrollViewDelegate
extension CollectionViewDriver: UICollectionViewDelegateFlowLayout
Represents the main entry-point to the library, and underlying UICollectionView components.
A CollectionViewDriver is responsible for “driving” the collection view.
It handles all layout, data source, delegate, and diffing operations.
-
A closure type used to notify callers of collection view updates.
Declaration
Swift
public typealias DidUpdate = @MainActor (CollectionViewDriver) -> Void -
The collection view.
Declaration
Swift
@MainActor public let view: UICollectionView -
A set of options to customize behavior of the driver.
Declaration
Swift
@MainActor public let options: CollectionViewDriverOptions -
The collection view model.
Declaration
Swift
@Published @MainActor public private(set) var viewModel: CollectionViewModel { get set } -
A scroll view delegate object to receive forwarded events.
Declaration
Swift
@MainActor public weak var scrollViewDelegate: UIScrollViewDelegate? -
A flow layout delegate object to receive forwarded events.
Declaration
Swift
@MainActor public weak var flowLayoutDelegate: UICollectionViewDelegateFlowLayout?
-
Initializes a new
CollectionViewDriver.Warning
The driver does not retain the
cellEventCoordinator, because this object is typically the view controller that owns the driver. Thus, the caller is responsible for retaining and keeping alive thecellEventCoordinatorfor the entire lifetime of the driver.Declaration
Swift
@MainActor public init(view: UICollectionView, viewModel: CollectionViewModel = .empty, options: CollectionViewDriverOptions = .init(), emptyViewProvider: EmptyViewProvider? = nil, cellEventCoordinator: CellEventCoordinator? = nil)Parameters
viewThe collection view.
viewModelThe collection view model.
optionsA set of options to customize behavior of the driver.
emptyViewProviderAn empty view provider.
cellEventCoordinatorThe cell event coordinator, if you wish to handle cell events outside of your cell view models. Note: This object is not retained by the driver.
-
The number of sections displayed by the collection view.
Declaration
Swift
@MainActor public var numberOfSections: Int { get } -
Returns the count of items in the specified section.
Declaration
Swift
@MainActor public func numberOfItems(in section: Int) -> IntParameters
sectionThe index of the section for which you want a count of the items.
Return Value
The number of items in the specified section.
-
Updates the collection with the provided
viewModel. This method will trigger a diff between the previous view model and the newly provided view model.Declaration
Swift
@MainActor public func update(viewModel new: CollectionViewModel, animated: Bool = true, completion: DidUpdate? = nil)Parameters
viewModelThe new collection view model.
animatedWhether or not to animate updates.
completionA closure to call when the driver finishes diffing and updating the collection view. The driver passes itself to the closure. It is always called on the main thread.
-
update(viewModel:Asynchronousanimated: ) An async version of
update(viewModel:animated:completion:).Updates the collection with the provided
viewModel. This method will trigger a diff between the previous view model and the newly provided view model.Declaration
Swift
@MainActor public func update(viewModel new: CollectionViewModel, animated: Bool = true) asyncParameters
viewModelThe new collection view model.
animatedWhether or not to animate updates.
View on GitHub