3

私の問題はこれと似ていますが、唯一の例外があります。私のImageViewは、ウィンドウ内の同じ場所に表示され、コンテンツが異なります。コンテンツには、コンテンツ固有のアクションを呼び出すために使用する一意の識別子があります。

簡単に要約すると、男はinitWithTargetメソッドのセレクターセクションにパラメーターを渡す方法を探しています。

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(handleTapGesture:itemSKU:)];

どうすればhandleTapGestureメソッドに属性を渡すことができますか、それ以外の場合は一意の値を読み取るにはどうすればよいですか?

どんな考えでもありがたいです。

編集:コンテンツはデータベースから取得されており、毎回異なります。一意の識別子はSSNに非常によく似ており、繰り返されません。

4

2 に答える 2

7

UIImageViewタグプロパティにコンテンツ識別子を設定し、その情報をセレクターから読み取ることができます。

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(handleTapGesture:)];

[imageView addGestureRecognizer:tapGesture];
imageView.tag = 0;

その後:

- (void)handleTapGesture:(UITapGestureRecognizer *)sender
{
    if( ((UIImageView *) sender.view).tag == 0 ) // Check the identifier
    {
        // Your code here
    }
}
于 2012-07-03T19:19:30.803 に答える
0

を拡張してUIImageView、必要な値(プロパティとして)とメソッドを追加してみてください。

@interface UIImageViewWithId: UIImageView

@property int imageId;

@end

次に、さらに素晴らしいものにしたい場合は、この「ウィジェット」の実装に動作をカプセル化することをお勧めします。これによりViewController、すっきりときれいに保たれ、このウィジェットを複数のコントローラーで使用できるようになります。

@implementation UIImageViewWithId

@synthesize imageId;

- (void)handleTapGesture:(UIGestureRecognizer *)gesture {
   NSLog("Hey look! It's Id #%d", imageId);
}

@end

次に、タップを個々UIImageViewWithIdのに委任します

UIImageViewWithId *imageView = [[UIImageViewWithId ... ]]
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget: imageView  action:@selector(handleTapGesture:)];
于 2015-11-03T00:18:02.737 に答える