Ios 块中具有动作的UITapGestureRecognitor
我有一个迭代来处理JSON提供的_id值,并将操作分配给列表中的每个元素。我的问题是,当我点击元素后,变量_id总是为nil。有没有办法将_id的当前迭代值分配给每个点击Ios 块中具有动作的UITapGestureRecognitor,ios,objective-c,xcode,Ios,Objective C,Xcode,我有一个迭代来处理JSON提供的_id值,并将操作分配给列表中的每个元素。我的问题是,当我点击元素后,变量_id总是为nil。有没有办法将_id的当前迭代值分配给每个点击 int i=0; for (NSDictionary *item in json) { NSString *_id = [item objectForKey:@"_id"]; //Main container // UIView *temp_container = [[UIView alloc
int i=0;
for (NSDictionary *item in json) {
NSString *_id = [item objectForKey:@"_id"];
//Main container
//
UIView *temp_container = [[UIView alloc] init];
temp_container.frame = CGRectMake(0, i*76, 320, 75);
temp_container.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:[^{ NSLog(@"id value: %@", _id); } copy] action:@selector(invoke)];
tap.numberOfTapsRequired = 1;
[temp_container addGestureRecognizer:tap];
i++;
}
以下是控制台输出:
2014-08-26 18:17:32.511 appTwo[33519:60b] -[__NSArrayM invoke]: unrecognized selector sent to instance 0x91b6210
2014-08-26 18:17:32.515 appTwo[33519:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM invoke]: unrecognized selector sent to instance 0x91b6210'
你把临时容器添加到superview了吗?是的,我就是这样测试点击动作的。我只是不想包含UI代码的所有其余部分。请尝试一下\uuu block NSString*\u id=[[item objectForKey:@\u id]copy]?我建议使用temp_container.tag或使用_id将视图存储在可变字典中,并在self上编写一个单独的方法,而且我相信target:[^{}copy]invoke使用私有方法