【问题标题】:Collection View Segue集合视图 Segue
【发布时间】:2013-05-26 17:05:13
【问题描述】:

我有一个集合视图,其中包含一个或两个已添加到可变数组的 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]){

    }
}

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

【问题讨论】:

    标签: ios uicollectionview uistoryboardsegue


    【解决方案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.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;
        }
    }
    

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

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

    【讨论】:

    • 我宁愿创建一个从集合视图单元到下一个视图控制器的 segue(不需要点击手势识别器 afaik)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多