この質問は以前に何らかの形で尋ねられたことがありますが、私の状況に当てはまる答えが見つかりませんでした。
一言で言えば、アプリケーション用のギャラリー モジュールを作成しています。複数のセクションで構成され、各セクションに多数のサムネイル画像があります。基本的な原則は、ユーザーがどのセクションにいて、どのサムネイルをタップしたかに基づいて、画像ビューアー モジュールが開始され、モーダルに表示されるということです。とても単純に思えます。必要なのは、画像ビューアーの初期化時に 2 つの int 変数 (セクション用と画像用に 1 つ) を渡すことだけです。
問題は、UITapGestureRecognizer がメソッドを直接呼び出せないことです。セレクターを使用しているため、2 つどころか、引数を渡すことができません。私が探しているのは次のようなものです:
[thumbnail004 setUserInteractionEnabled:YES];
UITapGestureRecognizer *tap004 = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(imageTappedWithSectionNumber:6
andImageNumber:4)];
[thumbnail004 addGestureRecognizer:tap004];
UITapGestureRecognizer を使用するときに、引数を使用してメソッドを直接呼び出す方法はありますか?
そうでない場合、この問題を解決する明白な方法の 1 つは、次のように、画像タップごとに個別のメソッドを作成することです。
- (void) image1_1Tapped {
// View initialization by passing 1 and 1
}
- (void) image1_2Tapped {
// View initialization by passing 1 and 2
}
And so on...
これは、画像ライブラリが動的ではないため可能ですが、世界で最も醜いコードになるため、何としても避けたいと考えています。
クリーンでエレガントなコードでこれを行う方法があるに違いありません...!
参考までに: 1. IB を使用していません。私はすべてをプログラムで行います。2. 1 つの引数を渡すだけでは十分ではありません。私は本当に2つを渡す必要があります。