UIImage / tapgesturerecognizer /新视图

时间:2013-07-22 04:27:50

标签: uiimageview uitapgesturerecognizer

我正在从plist中的数据填充tableView。当我选择一个单元格时,我使用prepareForSegue和indexPathForSelectedRow将plist数据带到详细视图控制器(DVC)。在DVC中我有一个UIImageView,它使用switch语句加载特定的图像,具体取决于tableView中选择的行。这一切都正常。

我想在我的UIImageView中添加一个tapGestureRecognizer,这样点击DVC中的图像就会显示一个新的视图控制器。在该视图控制器中,我在UIScrollView上有一个UIImageView。我希望DVC中的图像加载到下一个视图控制器中,以便我可以缩放和平移图像。

我正在使用故事板。我确保我的DVC中的UIImageView启用了用户交互,并通过拖放为其添加了tapGestureRecognizer。然后我从tapGestureRecognizer创建了一个segue到我的最终视图控制器并在模拟器中运行它。点击DVC中的图像会触发最后一个视图控制器。

我无法弄清楚如何告诉最后一个视图控制器中的UIImageView显示来自DVC的图像,该图像总是根据tableView中选择的行而不同。

我希望这是有道理的,有人可能知道如何实现这一目标。

1 个答案:

答案 0 :(得分:0)

我明白了。回顾一下,我需要根据tableview中选择的行将信息从plist传递到详细视图控制器。然后,在详细视图控制器中,我希望能够点击图像并在新的视图控制器中打开图像。详细视图控制器中的图像由所选行设置,因此不仅仅是创建第三个视图控制器和设置图像。

在表视图中选择了一行时,数据正从plist传递到详细视图控制器。这是在这里完成的:

tableviewcontroller.m

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
        NSDictionary *bighornData = _bighornTable[indexPath.row];
        BighornDetailViewController *bhdvc = (BighornDetailViewController *) [segue destinationViewController];
        bhdvc.bighornData = bighornData;
        bhdvc.bighornZoneNumber = indexPath.row;
    }

通过bighornData中存储的数字在详细视图控制器中设置图像。当我意识到数字存储在那里甚至在加载了细节视图控制器之后,这是将该变量传递给最终视图控制器的问题,因此也可以在那里设置图像。

detailviewcontroller.m

    -(void)prepareForSegue:(UIStoryboardSegue *) segue sender:(id)sender {
        ImageViewController *ivc = (ImageViewController *) [segue destinationViewController];
        ivc.bighornZoneNumber = _bighornZoneNumber;

    }