【问题标题】:Subclassing UICollectionView子类化 UICollectionView
【发布时间】:2015-03-27 13:51:57
【问题描述】:

有人知道如何在 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 convertCoreGraphics.CGRectexpression to typeFoundation.NSCoder`的最佳重载方法匹配。

我也尝试使用public InfinitiveScrollingUICollectionView (),但我明白了

UIKit.UICollectionView 类型不包含采用“0”参数的构造函数

我想覆盖LayoutSubviews。还是应该将UICollectionViewController 用于此目的?

【问题讨论】:

    标签: c# ios xamarin.ios xamarin uicollectionview


    【解决方案1】:

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

    【讨论】:

    • 你知道我在哪里可以找到构造函数吗?我尝试使用您发布的第一种方法。我把它放在UICollectionViewController:this.CollectionView = new MyCustomUICollectionView(this.View.Frame,layout) 的构造函数中,但在这里他不能让一个单元格出队。当我创建一个新布局时,它确实在ViewDidLoad 中工作。它不应该在构造函数中也起作用吗?
    • 当我实例化我的UICollectionViewController 时,我必须传递一个布局。我应该传递一个虚假的布局还是应该在将其传递给MyCustomUICollectionView 之前将其临时存储在一个变量中?
    • 如果你想稍后实例化布局和集合视图,不要使用 UICollectionViewController,而是使用普通的 UIViewController 并添加一个新的 UICollectionView。
    • 好的。那么谁会得到像NumberOfSectionsGetItemsCountGetCell 这样的方法调用呢?是集合视图本身还是我必须定义一个UICollectionViewDataSource
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多