UICollectionViewDelegateFlowLayout有一个名为
sizeForItem的方法(MonoTouch中的
GetSizeForItem).
但我没有明确地提供委托 – 相反,我继承自UICollectionViewController.
它混合了数据源和委托功能,但没有这种方法来覆盖.
我尝试将其添加到我的控制器:
[Export ("collectionView:layout:sizeforItemAtIndexPath:")] public virtual Sizef GetSizeforItem (UICollectionView collectionView,UICollectionViewLayout layout,NSIndexPath indexPath) { return new Sizef (100,100); }
它从未被称为.
如何在不诉诸分离委托和数据源的情况下提供此方法?
解决方法
你不能.在Obj-C中,viewcontroller(或任何类)对象可以采用委托协议.这在Monotouch中是不可能的.您给了使用委托实例.但这可以是私人课程
public class CustomCollectionViewController:UICollectionViewController { public CustomCollectionViewController():base() { this.CollectionView.Delegate = new CustomViewDelegate(); } class CustomViewDelegate: UICollectionViewDelegateFlowLayout { public override System.Drawing.Sizef GetSizeforItem (UICollectionView collectionView,NSIndexPath indexPath) { return new System.Drawing.Sizef (100,100); } } }