将自定义单元格图像视图图像传递给新的视图控制器

时间:2013-10-18 21:54:03

标签: ios ios6 uitableview uigesturerecognizer

我有一个视图控制器,其中UITableView包含一些自定义单元格。

在自定义单元格中,我有一个主UIImageView。我在图片视图中添加了一个点击手势识别器,以便在点按图像时调用handleImageTap方法。

问题
我要做的是将图像从选定的UIImageView(从特定单元格)传递到新的视图控制器。

当调用handleImageTap时,我运行以下命令:

UIImageView *imageView = (UIImageView *)gestureRecognizer.view;

// send the image instead of self when firing the segue
[self performSegueWithIdentifier:@"remindMeTurnInfo" sender:imageView];

然后我在prepareForSegue方法中有以下内容:

if ([segue.identifier isEqualToString:@"remindMeTurnInfo"]) {
        UIImageView *imgView = (UIImageView *)sender;
        MESPlayedTurnReminderViewController *VC = segue.destinationViewController;
        VC.mainImageView.image = imgView.image;
}

以上不起作用图像未通过。如何将图像从选定的单元格图像视图中获取到新控制器?

同时
有时,当选择单元格的图像视图时,会调用didSelectRowAtIndexPath方法。这不正确,在点按图像视图时不应调用。这似乎并不是所有的时间,无论如何都要确保这不被称为?

我还需要引用imageview在prepareForSegue方法中的单元格。如何在此处(不应该)实际选择单元格时,如何获取imageview所在单元格的参考。

2 个答案:

答案 0 :(得分:1)

你的问题有2个问题。

首先,不应使用表格视图单元格来存储数据。表视图单元格是视图对象。他们显示数据。当用户触发对单元格的操作时,您应该找出单元格的indexPath,使用该信息查找模型中的数据(在您的情况下,所选行或部分/行的图像)并使用该信息

其次,你永远不应该试图操纵另一个视图控制器的视图。将其他VC的视图视为私有。这是一个很大的问题。到达另一个VC并触摸其视图违反了两个VC的封装,这意味着执行触摸的VC依赖于“触摸”VC的外观。坏。然后,您无法在不破坏其他代码的情况下更改触摸的VC的外观。它在创建新VC后也无法正常工作,因为它的视图尚不存在。

相反,您应该将“imageToUse”属性添加到另一个视图控制器,并在prepareForSegue方法中设置THAT。然后第二个视图控制器可以拍摄图像并将其安装在它的viewWillAppear方法的图像视图中。

答案 1 :(得分:0)

我改变了方法。

改为在目标控制器上放置UIImage。然后在该控制器的viewDidLoad中,我将图像传递给UIImageView。我想这是因为还没有创建图像视图。