Collection View Segue

时间:2013-05-26 17:05:14

标签: ios uicollectionview uistoryboardsegue

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

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

情景1

  1. Objectatindex:0 imageA ------ segue -----> newImageA
  2. 情景2

    1. Objectatindex:0 imageB ------ segue -----> newImageB
    2. Objectatindex:1 imageC ------ segue -----> newImageC
    3. 最好的方法是什么?

      我正在考虑......

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

      但是,不太确定如何继续。

1 个答案:

答案 0 :(得分:1)

您只需要从集合视图控制器到详细视图控制器的一个segue(让我们称之为detailSegue)。您还需要一个点击手势识别器,只需将其从故事板中的collectionviewcontroller中拖动即可。然后创建与此手势识别器相关的IBAction(按住它将其从故事板拖到视图控制器的实现中,选择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.pamphletPamphlet*类型的集合视图控制器的属性(或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;
    }
}

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

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