子类化UICollectionView

时间:2015-03-27 13:51:58

标签: c# ios xamarin.ios xamarin uicollectionview

有人知道如何在Xamarin.iOS中继承UICollectionView吗?

我试过这个

public class MyCustomUICollectionView : UICollectionView
{

    [Export ("initWithFrame:")]
    public InfinitiveScrollingUICollectionView (CGRect frame) : base(frame)
    {
        // initialization
    }
}

但我得到

  

UIKit.UICollectionView.UICollection(Foundation.NSCoder) has some invalid arguments Argument #1 cannot convert CoreGraphics.CGRect expression to type Foundation.NSCoder`的最佳重载方法匹配。

我也尝试使用public InfinitiveScrollingUICollectionView (),但我得到了

  

类型UIKit.UICollectionView不包含带有' 0'的构造函数。参数

我想覆盖LayoutSubviews。或者UICollectionViewController是否应该用于此目的?

1 个答案:

答案 0 :(得分:3)

UICollectionView没有接受单CGRect的构造函数,因此您也必须传递布局:

public class MyCustomUICollectionView : UICollectionView
{
    public MyCustomUICollectionView(CGRect frame, UICollectionViewLayout layout) 
        : base(frame, layout)
    {
    }
}

如果你愿意,你也可以在内部创建布局,这样你就不必从外面传递它:

public class MyCustomUICollectionView : UICollectionView
{
    private static readonly UICollectionViewLayout _layout;

    static MyCustomUICollectionView()
    {
        // Just an example
        _layout = new UICollectionViewFlowLayout();
    }

    public MyCustomUICollectionView(CGRect frame) : base(frame, _layout)
    {
    }
}