UICollectionViewDelegateFlowLayout has a method called sizeForItem (GetSizeForItem in MonoTouch).
But I'm not providing the delegate explicitly—instead, I'm inheriting from UICollectionViewController.
It mixes data source ands delegate functionality but doesn't have this method to override.
I tried adding this to my controller:
[Export ("collectionView:layout:sizeForItemAtIndexPath:")]
public virtual SizeF GetSizeForItem (UICollectionView collectionView, UICollectionViewLayout layout, NSIndexPath indexPath)
{
return new SizeF (100, 100);
}
and it was never called.
How do I provide this method without resorting to separating delegate and data source?
You can't. In Obj-C the viewcontroller (or any class) object can adopt the delegate protocol. This is not posible in Monotouch. You gave to use a delegate instance. But this can be a private class
Edit: Without the need of creating a delegate subclass, add this in your UICollectionviewSource