2013-05-26 41 views
0

我有一个集合视图,其中将包含一个或两个已添加到可变数组的JSON解析图像。我想从包含图像的集合视图单元继续到另一个视图控制器。但是,目标segue将包含与集合视图不同的图像(另一个JSON解析的图像)。另外,这两个collection视图单元格将会延伸到不同的图像。总结如下:收藏查看Segue

的CollectionView -------赛格瑞----------> DesintationVC

方案1

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

方案2

  1. Objectatindex:0 imageB ------ -----赛格瑞> newImageB
  2. Objectatindex:1 imageC ------赛格瑞-----> newImageC

什么是去了解这一点的最好方法是什么?

我的线沿线的思考...

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

    } 
} 

,但不太清楚如何进行。

回答

1

从收藏视图控制器到详细视图控制器(我们称之为detailSegue)只需要一个segue。您还需要轻触手势识别器,只需从故事板中将其拖放到collectionview控制器中即可。然后创建一个与这个手势识别器相关的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.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; 
    } 
} 

现在您的详细视图控制器将知道选择什么样的小册子,因此可以显示任何你需要取决于显示。

我希望这可以帮助,让我知道它是否工作!

+1

我宁愿从集合视图单元格创建一个segue到下一个视图控制器(不需要轻触手势识别器afaik) – asdfasdfads