0

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

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

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

我想不通的是如何告诉最后一个视图控制器中的 UIImageView 显示来自 DVC 的图像,根据 tableView 中选择的行,它总是不同的。

我希望这是有道理的,并且有人可能知道我如何做到这一点。

4

1 回答 1

0

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

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

表视图控制器.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 中存储的数字设置。当我意识到即使在细节视图控制器加载之后数字也存储在那里,只需将该变量传递给最终视图控制器,以便图像也可以在那里设置。

详细视图控制器.m

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

    }
于 2013-07-29T18:40:15.803 回答