我有两个视图控制器。 第一个是自定义视图控制器,用于加载资产库中的图像。 第二个视图控制器显示所选图像的完整大小,取消&删除按钮
我使用以下代码从自定义视图控制器中删除所选图像。 customviewcontroller.m
-(void)deleteItemsFromDataSourceAtIndexPaths:(NSArray *)itemPaths
{
//here i want to control the delete option when cancel pressed
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
for (NSIndexPath *itemPath in itemPaths) {
[indexSet addIndex:itemPath.row];
}
[self.selectedAssets removeObjectsAtIndexes:indexSet];
}
/* call the delete function*/
- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *selectedItemsIndexPaths = [self.collectionview1 indexPathsForSelectedItems];
[self deleteItemsFromDataSourceAtIndexPaths:selectedItemsIndexPaths];
[self.collectionview1 deleteItemsAtIndexPaths:selectedItemsIndexPaths];
}
这适用于从自定义视图控制器中删除所选图像。 但它的作品也取消了。现在,我想在取消时控制删除。 请帮助我解决这个问题。
我已经尝试使用按钮标签来识别按下了哪个按钮。但无法控制自定义vc secondview.m
- (IBAction)CancelPhoto:(id)sender{
[Cancel setTag:1]; //set tag value at cancel
}
答案 0 :(得分:1)
有几种方法可以在视图控制器之间传递日期。我根据您的要求为您提供了一个非常简单的解决方案:
假设您在第一个视图控制器中将所有图像都放在可变数组中。
NSMutableAray *imagesArray;
在第二个视图控制器中创建一个NSMutableArray类型的属性图像数组。
@property(nonatomic, strong) NSMutableAray *imagesArray;
在推送/呈现视图时将数组指定给属性
secondController.imagesArray = imagesArray;
在删除事件中从阵列中删除该图像。
[self.imagesArray removeObjectAtIndex:selectedIndex];
在您想要的地方解除/弹出您的第二个视图,并在 viewDidAppear 方法的 viewWillAppear 中刷新您的第一个视图控制器。
当您传递了主图像数组的引用时,两个类(视图控制器)通过指针共享相同的数组,并且从两侧的数组更改将反映在两个屏幕中
答案 1 :(得分:0)
有三种方式(在我看来):