Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试将参数传递给点击手势时的方法_Ios_Iphone_Objective C_Uitapgesturerecognizer - Fatal编程技术网

Ios 尝试将参数传递给点击手势时的方法

Ios 尝试将参数传递给点击手势时的方法,ios,iphone,objective-c,uitapgesturerecognizer,Ios,Iphone,Objective C,Uitapgesturerecognizer,我有一系列的图像,我是通过编程生成的。在每张图片上,我都添加了一个点击手势。我想发生的是,当图像被点击时,边框变成黑色 目前,我正在尝试向方法传递一个参数,然后该方法将在数组列表中查找图像。我正在努力找到正确的语法来传递这个论点 这是代码。感谢您的帮助 - (void)viewDidLoad { [super viewDidLoad]; int recents = 10; int x = 10; _recent.contentSize = CGSiz

我有一系列的图像,我是通过编程生成的。在每张图片上,我都添加了一个点击手势。我想发生的是,当图像被点击时,边框变成黑色

目前,我正在尝试向方法传递一个参数,然后该方法将在数组列表中查找图像。我正在努力找到正确的语法来传递这个论点

这是代码。感谢您的帮助

    - (void)viewDidLoad
{
    [super viewDidLoad];
    int  recents = 10;

    int x = 10;

    _recent.contentSize = CGSizeMake((x*120)+10,100 );
   for(int i = 0; i <=recents; i ++){

  _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, 10, 90, 90)];

       [_arrayImages addObject:_imageView];

        NSURL *url = [NSURL URLWithString:@"http://www.vetprofessionals.com/catprofessional/images/home-cat.jpg"];
        NSData *data = [NSData dataWithContentsOfURL:url];
        _imageView.image = [[UIImage alloc] initWithData:data];

        _imageView.layer.masksToBounds = YES;
        _imageView.layer.cornerRadius = 45.0;
        _imageView.layer.borderColor = [UIColor blueColor].CGColor;
        _imageView.layer.borderWidth = 3.0f;
        _imageView.layer.rasterizationScale = [UIScreen mainScreen].scale;
        _imageView.layer.shouldRasterize = YES;
      NSUInteger * count;
        _imageView.tag = i;

       UITapGestureRecognizer *tapGesture =
       [[UITapGestureRecognizer alloc]
        initWithTarget:self action:@selector(didTapImageWithGesture:)];
       tapGesture.numberOfTapsRequired = 1;
       [_imageView addGestureRecognizer:tapGesture];




        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, 110, 90, 24)];
        label.text = @"Sam Stone";
        label.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
        label.backgroundColor = [UIColor clearColor];
        label.textColor = [UIColor colorWithRed:62/255.0f green:68/255.0f blue:75/255.0f alpha:1.0f];
        label.textAlignment = NSTextAlignmentCenter;
       [_recent addSubview:_imageView];
       [_recent addSubview:label];
        [_arrayImages addObject:_imageView];
           x=x+110;
    }


}
- (void)didTapImageWithGesture:(id)sender {

    UIImageView *image;
    image = [_arrayImages objectAtIndex:((UIGestureRecognizer *)sender).view.tag];
    image.layer.borderColor = [UIColor blackColor].CGColor;

}
-(void)viewDidLoad
{
[超级视图下载];
int-recents=10;
int x=10;
_最近的.contentSize=CGSizeMake((x*120)+10100);

对于(int i=0;i向点击手势添加一个标记,该标记告诉图像视图索引,在点击操作中,您将获得发送者,从中您可以从图像视图中获得标记值

在代码中,向手势识别器添加标记

   UITapGestureRecognizer *tapGesture =
   [[UITapGestureRecognizer alloc]
    initWithTarget:self action:@selector(didTapImageWithGesture:)];
   tapGesture.numberOfTapsRequired = 1;
   tapGesture.tag = i; 
   [_imageView addGestureRecognizer:tapGesture];

我可能遗漏了什么,但这应该更简单。我们有N个图像视图和N个手势识别器,每个都有一个。手势识别器的方法签名如下:

- (void)didTapImageWithGesture:(UIGestureRecognizer *)gr {

    // want the view?
    UIImageView *imageView = (UIImageView *)gr.view;

    // want the image?
    UIImage *image = imageView.image;

    // want the index of the imageView in the array?
    // not sure why you'd want this. all it tells you is the z-order
    NSInteger index = [_arrayImages indexOfObject:imageView];

    // want the view again?
    UIImageView *imageViewAgain = _arrayImages[index];
    // but why?  you already have the view

    // does
    if (imageViewAgain == imageView) // of course it's true!
}
请注意,我们根本不需要参考标记或水龙头的位置。现在,如果我们标记了视图,我们还可以说:

NSInteger tag = gr.view.tag;
UIImageView *imageViewAgainAgain = _arrayImages[tag];
或者我们可以说:

UIImageView *imageViewAgainAgainAgain = [gr.view.superview viewWithTag:tag];

但同样,这就像是从一个歪歪扭扭的巴黎出租车司机那里搭了一辆车,驾驶你在拜占庭式的圈子里转,只是跑了一下表。

我编辑了上面的代码,解释了我是如何解释这两个答案的。你知道为什么这行不通吗?更新了我的答案,以反映你的问题。