IOS:在自定义视图控制器和视图控制器之间传回数据

时间:2014-01-06 11:32:39

标签: ios iphone

我有两个视图控制器。 第一个是自定义视图控制器,用于加载资产库中的图像。 第二个视图控制器显示所选图像的完整大小,取消&删除按钮

我使用以下代码从自定义视图控制器中删除所选图像。 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
}

2 个答案:

答案 0 :(得分:1)

有几种方法可以在视图控制器之间传递日期。我根据您的要求为您提供了一个非常简单的解决方案:

假设您在第一个视图控制器中将所有图像都放在可变数组中。

NSMutableAray *imagesArray;

在第二个视图控制器中创建一个NSMutableArray类型的属性图像数组。

@property(nonatomic, strong) NSMutableAray *imagesArray;

在推送/呈现视图时将数组指定给属性

secondController.imagesArray = imagesArray;

在删除事件中从阵列中删除该图像。

[self.imagesArray removeObjectAtIndex:selectedIndex];

在您想要的地方解除/弹出您的第二个视图,并在 viewDidAppear 方法的 viewWillAppear 中刷新您的第一个视图控制器。

当您传递了主图像数组的引用时,两个类(视图控制器)通过指针共享相同的数组,并且从两侧的数组更改将反映在两个屏幕中

答案 1 :(得分:0)

有三种方式(在我看来):

  1. 代表
  2. 通知
  3. 如果您使用数据库,只需删除图片网址并重新加载数据