UICollectionViewDataSource Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
The data source for a UICollectionView.
[Foundation.Model]
[Foundation.Protocol]
[Foundation.Register("Microsoft_iOS__UIKit_UICollectionViewDataSource", false)]
public abstract class UICollectionViewDataSource : Foundation.NSObject, IDisposable, UIKit.IUICollectionViewDataSource
[Foundation.Model]
[Foundation.Protocol]
[Foundation.Register("Microsoft_MacCatalyst__UIKit_UICollectionViewDataSource", false)]
public abstract class UICollectionViewDataSource : Foundation.NSObject, IDisposable, UIKit.IUICollectionViewDataSource
[Foundation.Model]
[Foundation.Protocol]
[Foundation.Register("Microsoft_tvOS__UIKit_UICollectionViewDataSource", false)]
public abstract class UICollectionViewDataSource : Foundation.NSObject, IDisposable, UIKit.IUICollectionViewDataSource
[<Foundation.Model>]
[<Foundation.Protocol>]
[<Foundation.Register("Microsoft_iOS__UIKit_UICollectionViewDataSource", false)>]
type UICollectionViewDataSource = class
inherit NSObject
interface IUICollectionViewDataSource
interface INativeObject
interface IDisposable
[<Foundation.Model>]
[<Foundation.Protocol>]
[<Foundation.Register("Microsoft_MacCatalyst__UIKit_UICollectionViewDataSource", false)>]
type UICollectionViewDataSource = class
inherit NSObject
interface IUICollectionViewDataSource
interface INativeObject
interface IDisposable
[<Foundation.Model>]
[<Foundation.Protocol>]
[<Foundation.Register("Microsoft_tvOS__UIKit_UICollectionViewDataSource", false)>]
type UICollectionViewDataSource = class
inherit NSObject
interface IUICollectionViewDataSource
interface INativeObject
interface IDisposable
- Inheritance
- Attributes
- Implements
Remarks
As with other parts of iOS, such as UITableView and MKMapView, UICollectionView gets its data from a data source, which is exposed in MonoTouch via the UICollectionViewDataSource class. This class is responsible for providing the content to the UICollectionView including:
- Cells – Returned from GetCell(UICollectionView, NSIndexPath) method.:
- Supplementary Views – Returned from GetViewForSupplementaryElement(UICollectionView, NSString, NSIndexPath) method.:
- Number of sections – Returned from NumberOfSections(UICollectionView) method. Defaults to 1 if not implemented.:
- Number of items per section – Returned from GetItemsCount(UICollectionView, IntPtr) method.:
The UICollectionView maintains a reuse queue, which efficiently reuses UICollectionReusableViews without allocating and de-allocating any more than necessary. The GetCell(UICollectionView, NSIndexPath) and GetViewForSupplementaryElement(UICollectionView, NSString, NSIndexPath) are the functions that mutate the values of UICollectionReusableView component views. Because these methods may be called frequently during scrolling (particularly GetCell(UICollectionView, NSIndexPath)), the application developer should avoid unnecessary calculation in them.
The following code, taken from the "Introduction to Collection Views," shows a simple UICollectionViewDataSource implementation. There are 3 sections and a large animal array representing model data. The number of items per section is 1/3 of the total size of the animals array. The AnimalCell type is a subtype of UICollectionViewCell and is defined as having a UIImageImage property; the GetCell(UICollectionView, NSIndexPath) method sets this property in the reused animalCell from the animals data as appropriate. Similarly, the UICollectionViewDataSource sets the Text property of a Header type defined in the project.
protected const int SectionCount = 3;
public override int NumberOfSections (UICollectionView collectionView)
{
return SectionCount;
}
public override int GetItemsCount (UICollectionView collectionView, int section)
{
return animals.Count / SectionCount;
}
public override UICollectionViewCell GetCell (UICollectionView collectionView, Foundation.NSIndexPath indexPath)
{
var animalCell = (AnimalCell)collectionView.DequeueReusableCell (animalCellId, indexPath);
var animal = animals [indexPath.Section * (animals.Count / SectionCount) + indexPath.Row];
animalCell.Image = animal.Image;
return animalCell;
}
public override UICollectionReusableView GetViewForSupplementaryElement (UICollectionView collectionView, NSString elementKind, NSIndexPath indexPath)
{
var headerView = (Header)collectionView.DequeueReusableSupplementaryView (elementKind, headerId, indexPath);
headerView.Text = "Supplementary View Section " + indexPath.Section.ToString ();
return headerView;
}
The UICollectionViewSource combines the UICollectionViewDataSource API and the UICollectionViewDelegate API in a single convenience class. Rather than creating two classes to assign to the DataSource and Delegate properties, a single UICollectionViewSource can be created and assigned to the Source property.
Constructors
| Name | Description |
|---|---|
| UICollectionViewDataSource() |
Creates a new UICollectionViewDataSource with default values. |
| UICollectionViewDataSource(NativeHandle) |
A constructor used when creating managed representations of unmanaged objects. Called by the runtime. |
| UICollectionViewDataSource(NSObjectFlag) |
Constructor to call on derived classes to skip initialization and merely allocate the object. |
Properties
| Name | Description |
|---|---|
| AccessibilityAttributedUserInputLabels | (Inherited from NSObject) |
| AccessibilityRespondsToUserInteraction | (Inherited from NSObject) |
| AccessibilityTextualContext | (Inherited from NSObject) |
| AccessibilityUserInputLabels | (Inherited from NSObject) |
| Class | (Inherited from NSObject) |
| ClassHandle |
The Objective-C class handle for this class. (Inherited from NSObject) |
| DebugDescription | (Inherited from NSObject) |
| Description | (Inherited from NSObject) |
| Handle |
Handle (pointer) to the unmanaged object representation. (Inherited from NSObject) |
| IsDirectBinding | (Inherited from NSObject) |
| IsProxy | (Inherited from NSObject) |
| RetainCount | (Inherited from NSObject) |
| Self | (Inherited from NSObject) |
| Superclass | (Inherited from NSObject) |
| SuperHandle |
Handle used to represent the methods in the base class for this NSObject. (Inherited from NSObject) |
| Zone | (Inherited from NSObject) |