0

可変配列に追加された 1 つまたは 2 つの JSON 解析済み画像を含むコレクション ビューがあります。画像を含むコレクションビューセルから別のビューコントローラーにセグエしたいと思います。ただし、宛先セグエには、コレクション ビューとは異なるイメージ (別の JSON 解析イメージ) が含まれます。また、2 つのコレクション ビュー セルは、異なる画像にセグエします。以下にまとめます。

Collectionview -------次へ----------> 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

コレクション ビュー コントローラーから詳細ビュー コントローラーへのセグエは 1 つだけ必要です (これを と呼びましょうdetailSegue)。また、タップ ジェスチャ レコグナイザも必要です。ストーリーボードからコレクション ビュー コントローラにドラッグするだけです。次に、このジェスチャ レコグナイザーに関連する 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タイプのコレクションView Controllerのプロパティ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 に答える