1

我是 Mvvmcross 框架的新手,目前正在探索它的 iOS 部分(哦,也是 iOS 开发的新手,以描绘我目前的情况^^)。我正在使用 vNext 版本。

我找到了对 UICollectionViewController 实现的引用(MvxTouchCollectionViewController 和 MvxBindableCollectionViewSource),但是这些类似乎只是未来实现的骨架(抽象类,至少缺少一种 MvxSimpleBindableCollectionViewSource)。我还没有找到使用此功能的示例。我还发现了 Stuart 的一篇博文,假设他正在研究这一部分(Work In Progress - MvvmCross lists sample)。

是否有人已经玩过这部分并知道实现或使用示例?

我看过 Stuart 在其文章中提到的第 10 分钟的研讨会,看起来很有趣,对我来说是一个很好的起点。

4

1 回答 1

1

我在几个客户应用程序中使用了集合视图控制器,但我认为我没有发布任何使用它的开源示例。

本质上,collectionview 的使用与 tableview 和 cell 的使用非常相似——详见:http ://slodge.blogspot.co.uk/2013/01/uitableviewcell-using-xib-editor .html

在 vNext 中,示例控制器可能如下所示:

public class MyCollectionView : BaseCollectionView<MyCollectionViewModel>
{
    private bool _needToCallViewDidLoadManually;

    public HubView (MvxShowViewModelRequest request)
        : base(request, new UICollectionViewFlowLayout (){
            ItemSize= new System.Drawing.SizeF (100, 100),
            MinimumInteritemSpacing = 20.0f,
            SectionInset = new UIEdgeInsets (10,50,20,50),
            ScrollDirection = UICollectionViewScrollDirection.Vertical,

        })
    {
        if (_needToCallViewDidLoadManually) {
            ViewDidLoad();
        }
    }

    public override void ViewDidLoad ()
    {
        if (ShowRequest == null) {
            _needToCallViewDidLoadManually = true;
            return;
        }

        base.ViewDidLoad ();

        _needToCallViewDidLoadManually = false;

        var source = new CollectionViewSource(CollectionView);

        this.AddBindings(
            new Dictionary<object, string>()
            {
            { source, "ItemsSource TheItems" }
        });

        CollectionView.Source = source;
        CollectionView.ReloadData();
    }

    public class CollectionViewSource : MvxBindableCollectionViewSource
    {
        public CollectionViewSource (UICollectionView collectionView)
            : base(collectionView, MyViewCell.Identifier)
        {
            collectionView.RegisterNibForCell(UINib.FromName(MyViewCell.Identifier, NSBundle.MainBundle), MyViewCell.Identifier);
        }
    }
}

如果您现在开始开发,那么考虑刚刚进入 Beta 的 v3 分支,您可能也会受益。

于 2013-04-04T19:56:19.660 回答