0

我有一个集合视图,其中包含一个或两个已添加到可变数组的 JSON 解析图像。我想从包含图像的集合视图单元格转移到另一个视图控制器。但是,目标 segue 将包含与集合视图不同的图像(另一个 JSON 解析图像)。此外,两个集合视图单元格将转到不同的图像。总结如下:

Collectionview -------segue----------> DesintationVC

方案 1

  1. Objectatindex:0 imageA ------segue-----> newImageA

方案 2

  1. Objectatindex:0 imageB ------segue-----> newImageB
  2. Objectatindex:1 imageC ------segue-----> newImageC

解决此问题的最佳方法是什么?

我在想……

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:@"image1"]) {
    if (sender == [pamphlet_Array objectAtIndex:0]){

    }
}

但是,不太确定如何进行。

4

1 回答 1

1

您只需要从集合视图控制器到详细视图控制器的一个 segue(我们称之为detailSegue)。您还需要一个轻击手势识别器,只需将其从情节提要中拖到您的 collectionviewcontroller 中即可。然后创建一个与此手势识别器相关的 IBAction(按住 ctrl 键将其从情节提要拖到您的视图控制器的实现中,选择 UITapGestureRecognizer 作为发送者类型并将其命名为,例如tapped)。在这个tapped方法中,在下面的代码中添加一些东西:

- (IBAction)tapped:(UITapGestureRecognizer *)gesture {

    CGPoint tapLocation = [gesture locationInView:self.collectionView];
    NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:tapLocation];
    if (indexPath) {
    self.pamphlet = [pamphlet_Array objectAtIndex:indexPath.item]

        NSLog(@"Selected pamphlet: %@", self.pamphlet);

        [self performSegueWithIdentifier:@"detailSegue" sender:self];
    }
}

您的集合视图控制器类型(或您存储在 中的任何内容)self.pamphlet的属性在哪里。Pamphlet*pamphlet_Array

然后在您的prepareForSegue:sender:方法中执行以下操作:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    if ([segue.identifier isEqualToString:@"detailSegue"]){
        YourDetailViewController* vc = (YourDetailViewController*)segue.destinationViewController
        vc.selectedPamphlet = self.pamphlet;
    }
}

现在您的详细视图控制器将知道选择了哪个小册子,因此您可以根据它显示您需要显示的任何内容。

我希望这会有所帮助,让我知道它是否有效!

于 2013-05-27T16:00:11.280 回答