Ios 将NSDictionary作为参数传递给UITapGestureRecognizer
我想将Ios 将NSDictionary作为参数传递给UITapGestureRecognizer,ios,objective-c,nsarray,uitapgesturerecognizer,Ios,Objective C,Nsarray,Uitapgesturerecognizer,我想将NSArray作为参数传递给uitagesturerecognizer,并通过downloadpoptionpressed方法访问它。我该怎么做 NSArray NSArray *parameters = [NSArray arrayWithObjects:currentTrack, nil]; 创建UITapGestureRecognitor UITapGestureRecognizer *downloadOptionPressed = [[UITapGestureRecognizer
NSArray
作为参数传递给uitagesturerecognizer
,并通过downloadpoptionpressed方法访问它。我该怎么做
NSArray
NSArray *parameters = [NSArray arrayWithObjects:currentTrack, nil];
创建UITapGestureRecognitor
UITapGestureRecognizer *downloadOptionPressed = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(timeFrameLabelTapped:)];
[downloadOption addGestureRecognizer:downloadOptionPressed];
按下下载选项
方法
-(void)downloadOptionPressed:(UIGestureRecognizer*)recognizer{
}
是否存在无法将信息存储在所属视图控制器中的原因?是抽象的吗 您始终可以扩展UITapgestureRecognitor以承载更多数据:
@interface UserDataTapGestureRecognizer : UITapGestureRecognizer
@property (nonatomic, strong) id userData;
@end
@implementation UserDataTapGestureRecognizer
@end
您可以使用关联对象传递参数和点击手势实例 你可以查一下
它将解决您的问题。有时传递索引就足够了,在这种情况下,标记属性视图就是您的盟友。在下面的示例中,我假装将长按添加到tableview单元格中。一旦事件被触发,我只想知道哪个单元格被长时间按下:
let longPress = UILongPressGestureRecognizer(target: self, action: "longPress:")
cell.tag = indexPath.row
cell.addGestureRecognizer(longPress)
难道你不能创建一个属性并访问它吗?然后符合
NSArray
或NSDictionary
?正如你所注意到的,选择器被交给了这个手势。为什么不创建一个方法可以访问的数组呢?一个选择是将其设置为属性。但我可能还需要传递更多的参数。制作一个包含数组和任何其他选项并设置为属性的选项对象,然后从方法访问它。这是一个非常棒的、很少讨论的功能!比子类化干净得多。
- (void)downloadOptionPressed:(UserDataTapGestureRecognizer *)recognizer {
NSArray *parameters = recognizer.userData;
}
let longPress = UILongPressGestureRecognizer(target: self, action: "longPress:")
cell.tag = indexPath.row
cell.addGestureRecognizer(longPress)
func longPress(guesture: UILongPressGestureRecognizer) {
print("\(guesture.view!.tag)")} }