xamarin.ios – 如何在UICollectionViewController中提供GetSizeForItem实现?

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);
        }
    }
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...