0

我有一个UITableView带有一些自定义单元格的视图控制器。

在自定义单元格中,我有一个 main 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;
}

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

Also
Sometimes when the image view of the cell is selected the didSelectRowAtIndexPathmethod is called. 这是不正确的,不应在点击图像视图时调用。这似乎并非一直存在,是否有确保不调用它?

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

4

2 回答 2

1

你的问题有2个问题。

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

其次,你不应该尝试操纵另一个视图控制器的视图。将其他 VC 的观点视为私人观点。这是一个大问题。进入另一个 VC 并触摸它的视图违反了两个 VC 的封装,并且意味着进行触摸的 VC 变得依赖于“被触摸”的 VC 的外观。坏的。那么你不能在不破坏其他代码的情况下改变被触摸的 VC 的外观。在创建新的 VC 后它也不能正常工作,因为它的视图还不存在。

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

于 2013-10-19T00:42:52.943 回答
0

我改变了方法。

而是将 aUIImage放在目标控制器上。然后在这个控制器的 viewDidLoad 中,我将图像传递到UIImageView. 我想这是因为尚未创建图像视图。

于 2013-10-18T22:12:39.910 回答