Xamarin iOS:使UICollectionView单元动态化

时间:2017-01-17 22:04:05

标签: ios xamarin xamarin.ios uicollectionview

我正在为我的Xamarin iOS项目使用UICollectionView。

说,我显示7个CollectionViewCell,每个CollectionViewCell都有Image和Button。如果单击该按钮,我想删除该图像,并希望其余的单元格向上移动一个。 示例:如果我有7个单元格并且单击第5个单元格上的按钮,我想删除第5个单元格上的图像,它应该显示先前显示在第6个单元格上的图像,第6个单元格应该显示先前显示的图像第7个细胞。

当我删除图片并使用' collectionview.ReloadData()'它不起作用。我可以看到图像在后台删除但没有更新到集合视图。

有人可以提供建议吗?

更新

每个Cell都有Image和一个按钮。按钮单击我想删除图像,并希望其余单元格向上移动。

细胞

private void DeleteImage(object sender, EventArgs e)
    {
        //imageNum is the cellIndex num
        newViewModel.DeletePhotoCommand.Execute(imageNum);
        var path1 = collectionView.GetIndexPathsForSelectedItems();
        collectionView.ReloadItems(path1);
        }

视图模型

        private readonly ICommand deletePhotoCommand;

        public ICommand DeletePhotoCommand { get { return deletePhotoCommand; } }

        public NewViewModel()
                {
                    deletePhotoCommand = new BaseMvxCommand<int>(DeletePhoto);
                }
public string Photo1{get; set; }
public string Photo2{get; set; }
public string Photo3{get; set; }
public string Photo4{get; set; }
public string Photo5{get; set; }

    public void DeletePhoto(int imageNum)
            {
                imageNum++;
                switch (imageNum)
                {
                    case 1:
                        if (Photo1 != null)
                        {
                            Photo1 = Photo2;
                            Photo2 = Photo3;
                            Photo3 = Photo4;
                            Photo4 = Photo5;
                            Photo5 = null;
                        }
                        break;
                    case 2:
                        if (Photo2 != null)
                        {
                            Photo2 = Photo3;
                            Photo3 = Photo4;
                            Photo4 = Photo5;
                            Photo5 = null;
                        }
                        break;
                    case 3:
                        if (Photo3 != null)
                        {
                            Photo3 = Photo4;
                            Photo4 = Photo5;
                            Photo5 = null;
                        }
                        break;
                    case 4:
                        if (Photo4 != null)
                        {
                            Photo4 = Photo5;
                            Photo5 = null;
                        }
                        break;
                    case 5:
                        Photo5 = null;
                        break;
                }
                RaisePropertyChanged(() => Photo1);
                RaisePropertyChanged(() => Photo2);
                RaisePropertyChanged(() => Photo3);
                RaisePropertyChanged(() => Photo4);
                RaisePropertyChanged(() => Photo5);
            }

0 个答案:

没有答案