Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 覆盖UICollectionViewController中的集合视图_C#_Ios_Xamarin_Xamarin.ios_Uicollectionview - Fatal编程技术网

C# 覆盖UICollectionViewController中的集合视图

C# 覆盖UICollectionViewController中的集合视图,c#,ios,xamarin,xamarin.ios,uicollectionview,C#,Ios,Xamarin,Xamarin.ios,Uicollectionview,我想使用我的CustomCollectionView而不是UICollectionViewController使用的默认UICollectionView。如何覆盖默认属性的类型 我以这个为基础。我试过这个 public SimpleCollectionViewController (UICollectionViewLayout layout) : base (layout) { CollectionView = new CustomCollectionView (View.Frame,

我想使用我的
CustomCollectionView
而不是
UICollectionViewController
使用的默认
UICollectionView
。如何覆盖默认属性的类型

我以这个为基础。我试过这个

public SimpleCollectionViewController (UICollectionViewLayout layout) : base (layout)
{
    CollectionView = new CustomCollectionView (View.Frame, layout);
    // ...
}
但它崩溃了,因为
AnimalCell
尚未注册。然后我试着

public override CustomCollectionView CollectionView {
    get;
    set;
}
但是它不会编译,因为被重写的成员的类型是
UICollectionView

如何在保留内存管理、布局、位置、大小等的同时覆盖默认的
UICollectionView

编辑:

现在我尝试使用以下getter/setter:

public new CustomCollectionView CollectionView {
    get {
        if (CollectionView == null) {
            CollectionView = new CustomCollectionView ();
        }
        return CollectionView;
    }
    set {
        CollectionView = value;
    }
}
这是我的构造器:

public SimpleCollectionViewController (UICollectionViewLayout layout) : base (layout)
{
    CollectionView = new CustomCollectionView (View.Frame, layout);
    // ...
}
然后我想在我的
CustomCollectionView
类中使用以下构造函数:

public CustomCollectionView() : base()
{
}
但这是不被允许的,正如我们可以看到的那样。我不知道哪个构造函数是合适的。对我来说唯一有意义的一个方法是在使用此方法时导致堆栈溢出

public new CustomCollectionView CollectionView {
    get {
        if (CollectionView == null) {
            CollectionView = new CustomCollectionView (View.Frame, Layout);
        }
        return CollectionView;
        }
    set {
        CollectionView = value;
    }
}
编辑2:

现在我尝试了这个属性声明

private CustomCollectionView _collectionView;
public new CustomCollectionView CollectionView {
    get {
        if (_collectionView == null) {
            _collectionView = new CustomCollectionView (View.Frame, new UICollectionViewFlowLayout());
        }
        return _collectionView;
    }
    set {
        _collectionView = value;
    }
}
SimpleCollectionViewController
的构造函数中,我这样做

CollectionView = new CustomCollectionView (View.Frame, layout);
同样,它也不起作用(崩溃),因为在尝试退出队列时,头没有正确注册

var headerView = (Header)collectionView.DequeueReusableSupplementaryView (elementKind, headerId, indexPath);

我做错了什么?

你为什么投-1票有什么解释吗?也许我可以改进和编辑我的问题。如果你觉得这个问题对你来说太简单,你可以留下一个答案。
UICollectionViewController
是一个方便的类,我想在不创建新属性和复制内容的情况下交换一个属性的类型。我也可以使用普通的
UIViewController
并在那里添加所有内容,但我问是否有办法使用方便的类,因为内存管理是为我处理的。