Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Xamarin iOS:使UICollectionView单元格动态_Ios_Xamarin_Xamarin.ios_Uicollectionview - Fatal编程技术网

Xamarin iOS:使UICollectionView单元格动态

Xamarin iOS:使UICollectionView单元格动态,ios,xamarin,xamarin.ios,uicollectionview,Ios,Xamarin,Xamarin.ios,Uicollectionview,我正在为我的Xamarin iOS项目使用UICollectionView 比如说,我显示7个CollectionViewCell,每个CollectionViewCell都有图像和按钮。如果单击按钮,我想删除图像,并希望其余单元格向上移动一个。 示例:如果我有7个单元格,我单击了第5个单元格上的按钮,我想删除第5个单元格上的图像,它应该显示以前在第6个单元格上显示的图像,第6个单元格应该显示以前在第7个单元格上显示的图像 当我删除图像并使用“collectionview.ReloadData(

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

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

当我删除图像并使用“collectionview.ReloadData()”时,它不起作用。我可以看到图像在后台被删除,但没有更新到collectionview

有人能给我建议吗

更新

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

单元格

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);
            }
视图模型

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);
            }
private只读ICommand和deletePhotoCommand;
公共ICommand DeletePhotoCommand{get{return DeletePhotoCommand;}
public NewViewModel()
{
deletePhotoCommand=新的BaseMvxCommand(DeletePhoto);
}
公共字符串Photo1{get;set;}
公共字符串Photo2{get;set;}
公共字符串Photo3{get;set;}
公共字符串Photo4{get;set;}
公共字符串Photo5{get;set;}
公共void DeletePhoto(int-imageNum)
{
imageNum++;
开关(imageNum)
{
案例1:
if(Photo1!=null)
{
Photo1=Photo2;
Photo2=Photo3;
Photo3=Photo4;
照片4=照片5;
Photo5=null;
}
打破
案例2:
if(Photo2!=null)
{
Photo2=Photo3;
Photo3=Photo4;
照片4=照片5;
Photo5=null;
}
打破
案例3:
如果(照片3!=null)
{
Photo3=Photo4;
照片4=照片5;
Photo5=null;
}
打破
案例4:
如果(照片4!=null)
{
照片4=照片5;
Photo5=null;
}
打破
案例5:
Photo5=null;
打破
}
RaisePropertyChanged(()=>Photo1);
RaisePropertyChanged(()=>Photo2);
RaisePropertyChanged(()=>Photo3);
RaisePropertyChanged(()=>Photo4);
RaisePropertyChanged(()=>Photo5);
}

您不想简单地删除单击的行吗?我怎么做?另外,我使用的是MVVM,因此图像信息在ViewModels中,它们绑定到视图中。可以肯定的是,这可以按照您的要求执行,但您应该添加一些代码,或者我们找不到问题所在,因为描述听起来没问题。@AlancLiu我更新了问题并添加了代码。这与您在支持案例中发送给我的内容非常不同。希望我给你的工作解决方案也能帮助你完成真正的项目。