我有一个集合视图,它将包含一个或两个已添加到可变数组的JSON解析图像。我想从包含图像的集合视图单元格转到另一个视图控制器。但是,目标segue将包含与集合视图不同的图像(另一个JSON解析图像)。此外,两个集合视图单元将切换到不同的图像。总结如下:
Collectionview ------- segue ----------> DesintationVC
情景1
情景2
最好的方法是什么?
我正在考虑......
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:@"image1"]) {
if (sender == [pamphlet_Array objectAtIndex:0]){
}
}
但是,不太确定如何继续。
答案 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.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;
}
}
现在,您的详细视图控制器将会知道选择了哪个小册子,因此您可以根据需要显示您需要显示的内容。
我希望这有帮助,让我知道它是否有效!