Xamarin iOS:使UICollectionView单元格动态
我正在为我的Xamarin iOS项目使用UICollectionView 比如说,我显示7个CollectionViewCell,每个CollectionViewCell都有图像和按钮。如果单击按钮,我想删除图像,并希望其余单元格向上移动一个。 示例:如果我有7个单元格,我单击了第5个单元格上的按钮,我想删除第5个单元格上的图像,它应该显示以前在第6个单元格上显示的图像,第6个单元格应该显示以前在第7个单元格上显示的图像 当我删除图像并使用“collectionview.ReloadData()”时,它不起作用。我可以看到图像在后台被删除,但没有更新到collectionview 有人能给我建议吗 更新 每个单元格都有图像和按钮。单击按钮,我想删除图像,并希望其余单元格向上移动一个 单元格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(
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我更新了问题并添加了代码。这与您在支持案例中发送给我的内容非常不同。希望我给你的工作解决方案也能帮助你完成真正的项目。