0

UITableViewいくつかのカスタムセルを持つView Controllerがあります。

カスタムセル内に main がありUIImageViewます。画像ビューにタップ ジェスチャ認識機能を追加して、画像がタップされたときにhandleImageTapメソッドが呼び出されるようにします。

質問
私がやろうとしているのは、選択UIImageViewした (特定のセルからの) 画像を新しいビュー コントローラーに渡すことです。

handleImageTap が呼び出されたら、次を実行します。

UIImageView *imageView = (UIImageView *)gestureRecognizer.view;

// send the image instead of self when firing the segue
[self performSegueWithIdentifier:@"remindMeTurnInfo" sender:imageView];

次に、prepareForSegueメソッドに次のものがあります。

if ([segue.identifier isEqualToString:@"remindMeTurnInfo"]) {
        UIImageView *imgView = (UIImageView *)sender;
        MESPlayedTurnReminderViewController *VC = segue.destinationViewController;
        VC.mainImageView.image = imgView.image;
}

上記は機能しません。画像は渡されません。選択したセルの画像ビューから新しいコントローラーに画像を取得するにはどうすればよいですか?

また
、セルの画像ビューが選択されたときにdidSelectRowAtIndexPathメソッドが呼び出されることもあります。これは正しくないため、画像ビューがタップされたときに呼び出すべきではありません。これは常にあるとは限りませんが、これが呼び出されないようにする方法はありますか?

メソッドのイメージビューが含まれるセルへの参照も必要ですprepareForSegue。セルが実際にここで選択されている (すべきではない) 場合、イメージビューが含まれるセルの参照を取得するにはどうすればよいですか。

4

2 に答える 2

1

あなたの質問には2つの問題があります。

まず、テーブル ビュー セルを使用してデータを保存しないでください。テーブル ビュー セルはビュー オブジェクトです。データを表示します。ユーザーがセルでアクションをトリガーするときは、セルの indexPath を把握し、その情報を使用してモデル内のデータ (選択した行またはセクション/行の画像) を検索し、それを使用する必要があります。 .

次に、別のビュー コントローラーのビューを操作しようとしないでください。他の VC のビューをプライベートとして扱います。これは大当たりです。別の VC に到達してそのビューに触れると、2 つの VC のカプセル化に違反し、触れている VC が「触れた」VC の外観に依存するようになることを意味します。悪い。次に、他のコードを壊さずに、触れた VC の外観を変更することはできません。また、ビューがまだ存在しないため、新しい VC を作成した直後には機能しません。

代わりに、「imageToUse」プロパティを他のビュー コントローラに追加し、prepareForSegue メソッドでそれを設定する必要があります。次に、2 番目のビュー コントローラーがイメージを取得し、viewWillAppear メソッドのイメージ ビューにインストールできます。

于 2013-10-19T00:42:52.943 に答える