使用Tap Gesture识别器传递参数

Ger*_*acs 1 iphone argument-passing ios uitapgesturerecognizer

之前曾以某种形式提出过这个问题,但我找不到适合我情况的答案.

简而言之:我正在为我的应用程序构建一个库模块.它由几个部分组成,每个部分都有许多缩略图.基本原则是图像查看器模块基于用户所在的部分以及他或她所使用的缩略图来模态地呈现和呈现.似乎很简单; 我需要的是在初始化图像查看器时传递两个int变量(一个用于剖面,一个用于图像),并且一切都是hunky-dory.

问题是UITapGestureRecognizer无法直接调用方法.它使用选择器,通过它我无法传递参数,更不用说两个了.我要找的是这样的:

[thumbnail004 setUserInteractionEnabled:YES];
UITapGestureRecognizer *tap004 = [[UITapGestureRecognizer alloc] 
                       initWithTarget:self
                       action:@selector(imageTappedWithSectionNumber:6
                                                      andImageNumber:4)];
[thumbnail004 addGestureRecognizer:tap004];
Run Code Online (Sandbox Code Playgroud)

有没有办法在使用UITapGestureRecognizer时直接使用参数调用方法?

如果没有,解决这个问题的一个明显方法是为每个图像点击创建单独的方法,如:

- (void) image1_1Tapped { 
  // View initialization by passing 1 and 1
  }
- (void) image1_2Tapped { 
  // View initialization by passing 1 and 2
  }
And so on...
Run Code Online (Sandbox Code Playgroud)

这是可能的,因为图像库不是动态的,但是,它将是世界上最丑陋的代码,我想不惜一切代价避免使用它.

必须有一个方法来做一个干净优雅的代码...!

进一步参考:1.我不使用IB; 我以编程方式做所有事情.传递一个论点是不够的; 我真的需要通过两个.

Par*_*iya 9

使用associated objectpass argument沿tap gesture instance.

请参阅objective-c-associated-objects链接.